Zadanie 1 - poprawkowe
----------------------


Należy utworzyć dwa programy obsługujące prosty serwis do wymiany
plików.

Program 1: Serwer uczestników
-----------------------------

Serwer indeksu stanowi punkt rejestracji klienta w systemie. Każdy
klient na początku łączy się z serwerem indeksu w celu dowiedzenia
się, jakimi zasobami dysponują poszczególni klienci systemu. Serwer
indeksu utrzymuje aktualną listę klientów wraz z odpowiednimi listami
plików udostępnianych przez tych klientów. Po zgłoszeniu się klienta
serwer dodaje go do listy klientów wraz z podaną przez klienta listą
udostępnianych przez niego plików. Podobnie serwer usuwa klienta,
jeśli klient zgłosi, że kończy pracę. Dodatkowo serwer okresowo
rozsyła zapytanie do wszystkich klientów, prosząc o informację, czy
dalej funkcjonują. Brak odpowiedzi od klienta w wyznaczonym czasie
oznacza usunięcie klienta z listy. Każdy klient w każdej chwili ma
prawo pobrać od serwera indeksu aktualną listę klientów wraz ze
plikami przez nich udostępnianymi.

Klient zgłasza się do serwera uczestników za pomocą protokołu TCPP, za
pomocą protokołu TCP jest też pobierana lista uczestników wraz z listą
plików. Komunikacja w związku z okresowym zapytaniem od serwera do
klientów realizowana jest za pomocą protokołu UDP.

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

Klient po uruchomieniu zgłasza się do znanego mu (umieszczonego w
pliku konfiguracyjnym lub podanego z wiersza wywołania) serwera
indeksu. Pobiera od niego listę klientów i plików. Wyświetla te listę
na ekranie użytkownika. Użytkownik może wybrać klienta i plik. Po
wybraniu klient łączy się z drugim klientem i pobiera od niego
wskazany plik. Po ściągnięciu pliku klient łączy się znowu z serwerem
indeksu i pobiera z niego aktualną listę klientów i plikół, dzięki
której może się odbyć kolejne ściąganie.

Każdy klient powinien obsługiwać równoczesne dostarczanie wielu plików
do wielu innych klientów, które to dostarczanie plików ma być
prowadzone równolegle z własnym pobieraniem pliku. 

Klient wysyła do serwera informację o zakończeniu pracy na życzenie
użytkownika, gdy ten kończy granie i zamierza zakończyć program
klienta.

Komunikacja z serwerem uczestników odbywa się za pomocą TCP (za
wyjątkiem sytuacji wskazanych w opisie serwera). Komunikacja z innymi
klientami odbywa się za pomocą UDP.

Dopuszczalne jest dowolne rozwiązanie problemu pewności przesyłania
pakietów między klientami. Na przykład można przyjąć, że jeśli w ciągu
10 minut nie nadeszła odpowiedź, to uznajemy, że pakiet nie został
dostarczony.

Termin: 31.08.2004
Ostatnia modyfikacja: 6.06.2004

Valid HTML 4.01!