SK2


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]
SK2
SK2
sk2
SK2
sk2

więcej podobnych podstron