Zadanie 2 - poprawkowe
----------------------

Należy przy pomocy technik RPC utworzyć trzy programy - klienta i
serwera symulujące przesyłanie danych w sieci token ring 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 nośnika sieci. Zajmuje się on
przekazywaniem tokena kolejnym komputerom-klientom, przekazywaniem
danych między tymi klientami oraz obsługą dołączania i odłączania się
klientów.

Na początku wyłącznym posiadaczem tokena jest serwer. Po przyłączeniu
się pewnej liczby komputerów-klientów serwer podaje token kolejnym
klientom. Klient dostawszy token albo go oddaje, albo oddaje wraz z
danymi. Serwer ma za zadanie dostarczyć tak przekazane dane do
wskazanego klienta-odbiorcy. Po przekazaniu danych serwer podaje token
do kolejnego (w stosunku do nadawcy) klienta.
 
Serwer dodatkowo w losowy sposób 
- opóźniał pakiet, 
- gubił pakiet
(prawdopodobieństwo zdarzenia opóźnienia oraz częstość gubienia
pakietów mają być podawane w parametrach wywołania programu
serwera). 

Każdy klient będzie musiał przed rozpoczęciem komunikacji
zarejestrować się w serwerze, serwer w wyniku rejestracji podaje
klientowi jego adres (unikalny wśród klientów przyłączonych do danego
serwera).

Serwer udostępnia za odpowiednim wywołaniem listę wszystkich
zarejestrowanych u niego adresów klientów.

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 przez serwer komunikatów z danymi,
- liczbę wysłanych przez serwer komunikatów z danymi
- ilość bajtów otrzymanych przez serwer w komunikatach z danymi,
- ilość bajtów wysłanych przez serwer w komunikatach z danymi,
- liczbę przekazań tokena.


Program 2: Klient
-----------------

Program klienta po uruchomieniu 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ą komunikatów
token-ring losowe dane.  Klient może wylosować także odbiorcę spoza
listy - jednak zdarzenie to musi być równie prawdopodobne jak
zdarzenie wylosowania każdego innego odbiorcy. Pakiet wysłany pod taki
adres powinien zostać zgubiony.
 
Po wykonaniu określonej (z wiersza wywołania) liczby rund klient kończy
działanie i podaje statystyki: ile otrzymał pakietów, ile wysłał,
ile otrzymał danych w pakietach, ile wysłał danych w pakietach oraz
ile razy otrzymał token.

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: 31.08.2004
Ostatnia modyfikacja: 6.06.2004

Valid HTML 4.01!