Zadanie 2
---------
Należy przy pomocy technik RPC utworzyć trzy programy - klienta i serwera
symulujące przesyłanie danych w sieci za pomocą protokołu UDP oraz program
kończący symulację. Dodatkowo należy napisać skrypt lub program
przeprowadzający symulację.
Program 1: Serwer
-----------------
Program serwera ma symulować działanie sieci. Programy klientów będą
łączyły się z serwerem za pomocą protokołu RPC i przekazywały mu
datagramy pseudo-UDP (w postaci odpowiednio sformatowanych struktur
opisujących pełny nagłówek datagramu IP połączonego z datagramem UDP).
Serwer będzie w losowy sposób
- opóźniał datagram,
- zmieniał jego kolejność względną w stosunku do innych datagramów,
- gubił datagram
(prawdopodobieństwo zdarzenia opóźnienia oraz częstość gubienia
datagramów mają być podawane w parametrach wywołania programu
serwera). Serwer na podstawie danych z nagłówka UDP (adresu i numeru
portu) będzie przekazywał do odpowiedniego klienta przesłany mu
datagram. Jeśli przesłanie nie będzie możliwe, musi wygenerować
komunikat ICMP - odbiorca nieosiągalny i wysłać go do komputera, który
nadał początkowy datagram UDP.
Każdy klient będzie musiał przed rozpoczęciem komunikacji zarejestrować
swój adres IP oraz numer portu w serwerze.
Serwer udostępnia za odpowiednim wywołaniem listę wszystkich zarejestrowanych
u niego adresów IP wraz z portami.
Serwer implementuje także procedurę RPC kończącą jego pracę. Procedura
ta jest wywoływana przez program kończący symulację. Procedura ta
przed zakończeniem programu serwera wypisuje na ekran
- liczbę otrzymanych datagramów UDP,
- liczbę wysłanych datagramów UDP,
- liczbę wysłanych datagramów ICMP.
Program 2: Klient
-----------------
Program klienta po uruchomieniu losuje swój adres IP oraz numer portu
(adres IP musi byc w zakresie adresów klasy A, B lub C). Rejestruje się
u serwera, po czym w losowych odstępach czasu pobiera listę dostępnych
klientów od serwera, losuje jednego z nich i wysyła do niego za pomocą
datagramów pseudo-UDP obsługiwanych przez serwer pod wskazany (w wierszu
wywołania klienta) plik. Plik musi być podzielony na odpowiednie kawałki
mieszczące się w pojedynczym datagramie UDP. Klient może wylosować także
odbiorcę spoza listy - jednak zdarzenie to musi być równie prawdopodobne
jak zdarzenie wylosowania każdego innego odbiorcy.
Po wykonaniu określonej (z wiersza wywołania) liczby rund klient kończy
działanie i podaje statystyki: ile otrzymał datagramów UDP, ile ICMP,
ile wysłał datagramów UDP.
Program 3: Program kończący symulację
-------------------------------------
Program wysyła do serwera żądanie wywołania procedury kończącej symulację.
Program/skrypt wykonujący symulację
-----------------------------------
Program ten ma uruchomić z odpowiednimi parametrami serwera, następnie
uruchomić z odpowiednimi parametrami 100 klientów, poczekać aż
wszyscy klienci zakończą pracę, a następnie wywołać program kończący
symulację.
Termin: 7.04.2004
Ostatnia modyfikacja: 05.03.2004