Powrót na stronę UNIX

Napisz programy serwera pracujący poprzez połączenie UDP z przygotowanym już programem klienta. Klient wysyła do serwera datagram z liczbą sekund (liczba typu short) wyrażająca czas za jaki serwer ma wysłać komunikat do klienta. Serwer najpierw wysyła potwierdzenie przyjęcia zlecenia w postaci datagramu z ilością sekund zleconych po czym czeka zadany czas i wysyła do klienta datagram kończący w postaci liczby zero, jeśli nie otrzyma potwierdzenia pięciokrotnie próbuje ponownie wysyłać komunikat końcowy aż do otrzymania potwierdzenia lub błędu komunikacji. Kolejne próby odbywają się co 2 sekundy.

Program klient po wysłaniu zlecenia czeka na potwierdzenie, jeśli ono nie nadejdzie pięciokrotnie ponawia zlecenie aż do otrzymania potwierdzenia lub błędu komunikacji. Próby są ponawiane co 2 sekundy. Po otrzymaniu potwierdzenia czeka na komunikat końcowy wypisując na ekran znak * co sekundę. Po otrzymaniu komunikatu końcowego odsyła potwierdzenie (zero) i kończy działanie. UWAGA: tego programu Państwo nie piszecie, należy napisać jedynie program serwera!

Binarna wersja programu klienta jest dostępna w katalogu: /home/samba/borkowskim/udp.

Może się zdarzyć, że serwer po wysłaniu potwierdzenia ponownie otrzyma zlecenie od tego samego klienta (zgubione potwierdzenie od serwera), należy wtedy anulować stare zlecenie i przyjąć to nowe.

Serwer może przyjąć jednocześnie do 10 zleceń, przy nadejściu 11 wysyła datagram z liczbą -1, na co klient reaguje odpowiednim komunikatem na stderr i zakończeniem działania.

Program serwera kończy się po otrzymaniu SIGINT.

Program serwer jako parametr przyjmuje numer portu na którym będzie pracował, program klient przyjmuje jako parametry adres i port serwera oraz niezerowy czas w sekundach.

Zadanie sprawdza Marcin Borkowski, proszę je wgrać do katalogu /home/samba/borkowskim/unix/



Szczególna uwagę zwracamy na:
Powrót na stronę UNIX