Sieci komputerowe - Ćwiczenie 2
Forma zaliczenia: zademonstrowanie działającego (lub zaawansowanego)
programu na koniec zajęć i objaśnienie jego konstrukcji/działania (bez
sprawozdania).
Temat: Bazując na materiałach opisujących Netbios udostępnionych przed
zajęciami przez prowadzącego oraz wskazówkach umieszczonych na końcu tej
instrukcji napisz program (w języku C lub w Pascalu) dodający unikatową
nazwę węzła (komputera, na którym go uruchomiono) do lokalnej tabeli nazw
Netbiosa. Na koniec działania program ma usuwać dodaną nazwę z tabeli nazw.
Ogólny wymagany schemat działania programu:
1. Reset węzła Netbios (RESET).
2. Pobranie łańcucha tekstowego od użytkownika (nazwa dla węzła).
3. Dodanie nazwy jako unikatowej (ADDNAME).
4. Wstrzymanie działania programu do momentu naciśnięcia dowolnego klawisza
przez użytkownika (w tym momencie polecenie nbtstat -n wydane w wierszu
poleceń powinno wyświetlić dodaną nazwę)
5. Usunięcie dodanej nazwy (DELETENAME)
WSKAZÓWKI zakładamy, że funkcje są wykonywane w trybie wait (synch.)
W związku z faktem, że rozwiązanie w Turbo Pascalu bazuje na mechanizmie
przerwań mogą zdarzyć się problemy z działaniem takiego programu w
środowiskach Windows XP/Vista/7 (można wtedy próbować uruchamiania w DOS
Boksie lub w trybie zgodności z Windows95/98)
Ze względu na ograniczenia praw konta studenckiego polecenie nbtstat -n
może nie działać na komputerach w laboratoriach (polecenie to zwykle wymaga
uprawnień administratorskich) należy się wówczas posłużyć załączonym
programem nbtscan.exe , dla którego równoważna składnia wygląda następująco
nbtscan -f lokalny_nr_IP
Funkcje typu RESET, ADDNAME czy DELETENAME należy samodzielnie napisać
poprzez odpowiednie wypełnienie pól struktury NCB i wywołanie funkcji
Netbios (C, WinAPI) lub przerwania (Pascal)
Przed rozpoczęciem korzystania z Netbiosa (przed wywołaniem jakiejkolwiek
funkcji) zaleca się wyzerowanie obszaru zmiennej przechowującej blok NCB (w
C można użyć procedury memset(), w Pascalu - FillChar())
W celu ustalenia numeru przydzielonego karcie sieciowej (interfejsowi
sieciowemu) przez Netbios należy skorzystać z dołączonego programu
lananum.exe . Informacja ta jest potrzebna do wypełnienia pola
ncb_lana_num struktury NCB (nieprawidłowa wartość uniemożliwi skorzystanie
z jakiejkolwiek funkcji Netbiosa).
Nazwa dla węzła pobrana od użytkownika nie powinna być dłuższa niż 15
znaków. Proszę pamiętać, że zmienna typu String w Pascalu nie spełnia
wymagań formatu ASCIIZ (w pierwszym polu indeks 0 zawarta jest
informacja o długości łańcucha a nie znak). Należy więc dokonać
odpowiedniego przepisania znaków (i pamiętać o znaku pustym na końcu!).
Język C eliminuje ten problem tam wszystkie łańcuchy są w formacie ASCIIZ.
Zatrzymanie programu konsolowego w języku C najłatwiej zrealizować funkcją
'system( pause );'
Po wywołaniu każdej funkcji Netbiosa należy sprawdzić jej kod powrotu (kod
błędu), żeby się upewnić co do powodzenia podjętego działania (patrz
przykład implementacji funkcji Send w dokumencie Netbios-2.pdf)
Dla programu pisanego w języku C należy pamiętać o dołączeniu do kompilacji
biblioteki netapi32 (w kompilatorze MinGW jej odpowiednik to
libnetapi32.a - w środowisku Code Blocks dodajemy ją poprzez menu Project
Build options... zakładka Linker settings przycisk Add (i szukamy na
dysku libnetapi32.a - zwykle jest w katalogu lib kompilatora MinGW), w
środowisku MinGW Studio dodajemy bibliotekę wpisując netapi32 w pozycji
Project Settings zakładka Link okienko Libraries)
Polecane zródła: materiały pomocnicze udostępnione tydzień przed zajęciami,
Opracowanie Robert Tomaszewski
dokumentacja Netbiosa online:
Windows API - http://msdn.microsoft.com/en-us/library/bb870913
DOS API - http://www.netbiosguide.com/
Opracowanie Robert Tomaszewski
Wyszukiwarka
Podobne podstrony:
sk2[184]SK2SK2sk2SK2sk2więcej podobnych podstron