2007 01 09 Sko Zadprog3

Zadanie programistyczne 3 z SKO.

Na 2007-01-09.

Podgląd:

Zadanie nr 3 ??? Niezawodny transfer pliku przez UDP
9 punktów
Termin oddania: 09.01.2007 (godzina 23:59)

Program ma pozwalac na komunikacje plików pomiedzy dwoma uytkownikami. Pliki powinny byc
komunikowane za pomoca protokołu UDP w sposób w pełni niezawodny.
Program moe byc wyposaony w interfejs uytkownika, lub implementowac interfejs z linii
polecen, jednak budowa interfejsu nie bedzie przedmiotem oceny. W dowolnym interfejsie, plik od
uytkownika powinna byc wysyłany po wywołaniu specjalnego zdarzenia (np. kombinacja klawiszy
w interfejsie z linii polecen lub klikniecie na przycisk w interfejsie graficznym).
Program moe byc zbudowany w architekturze klient-serwer, jednak powinien umoliwiac obu
stronom na nawiazanie komunikacji.
Program powinien przyjmowac jako parametry uruchomienia port, na którym ma działac, oraz adres
IP oraz port, na którym działa program drugiego uytkownika (wszystkie datagramy maja zostac
wysłane na podany port).
Naley zwrócic uwage na to, ze:
1 Datagramy moga zostac uszkodzone (otrzymane z błedami). Jednake pliki musza byc
przekazywane uytkownikom bez błedów.
2 Datagramy moga dotrzec do drugiego programu w innej kolejnosci.
3 Niektóre datagramy moga sie zgubic i w ogóle nie dotrzec do drugiego programu. Jednake plik
wysłany przez pierwszego uytkownika musi zostac przekazany drugiemu uytkownikowi w
całosci, lub, jesli nastapiło trwałe odłaczenie sieci albo drugiego programu, program powinien
konczyc działanie i wyswietlic komunikat.
4 Jeeli korzysta sie z potwierdzen, one te moga sie zgubic.
5 Jeeli korzysta sie z retransmisji, moe sie okazac, ze niektóre datagramy dotra wielokrotnie.
Jednake plik dostarczony uytkownikowi musi byc identyczny z wysłanym plikiem.
Do przetestowania mona napisac program odbierajacy datagramy UDP na wskazanym porcie i
wysyłajacy je dalej na wskazany adres IP i port (mona wykorzystac UDP Proxy z zadania
pierwszego), w którym naley zaimplementowac funkcje, które w losowy sposób:
1. Nie beda przekazywały datagramu
2. Beda modyfikowały datagram i przekazywały datagram z błedami
3. Beda przetrzymywały datagramy z losowym opóznieniem, przekazujac nastepne datagramy
Podobny program zostanie uyty przy sprawdzaniu rozwiazania.
Program musi zachowywac pełen zapis otrzymanych oraz wysłanych datagramów w postaci
dziennika w pliku tekstowym. Nazwa pliku tekstowego powinna byc parametrem programu.
Program powinien zapisywac otrzymane i wysyłane datagramy do dziennika tu po ich
otrzymaniu/wysłaniu (najlepiej zdefiniowac funkcje wysyłajace i odbierajace datagramy, które take
zapisuja datagramy do dziennika).
Wysyłane datagramy UDP moga oprócz danych uytkownika zawierac dowolne dodatkowe
informacje.
Program powinien byc napisany w jezyku Java. Mona wybrac inny jezyk za zgoda prowadzacego
cwiczenia.
Przykładowy wyglad datagramu UDP:
Nagłówek IP
Nagłówek UDP
Nagłówek własnego protokołu
Dane

sko
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-Share Alike 2.5 License.