Powrót na stronę UNIX

Napisz programy klienta pracujący poprzez połączenie UDP z przygotowanym już programem serwera. 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.

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. UWAGA: tego programu Państwo nie piszecie, należy napisać jedynie program klienta!

Program serwer jako parametr przyjmuje numer portu na którym będzie pracował, program klient przyjmuje jako parametry (0<n<10) trójek :adres, port serwera i czas w sekundach.

Program klient rozsyła zlecenia do wszystkich serwerów po czym asynchronicznie czeka na potwierdzenia, jeśli one nie nadchodzą pięciokrotnie ponawia brakujące zlecenie aż do otrzymania potwierdzenia lub błędu komunikacji. Próby są ponawiane co 2 sekundy. Po ustaleniu statusu wszystkich zleceń (potwierdzenie lub timeout) i o ile nadeszło przynajmniej jedno potwierdzenie czeka na komunikaty końcowe wypisując na ekran znak * co sekundę. Po otrzymaniu każdego komunikatu końcowego odsyła potwierdzenie (zero), po otrzymaniu wszystkich takich komunikatów kończy działanie. Program musi się liczyć z wielokrotnym nadchodzeniem pakietów kończących od danego serwera i za każdym razem odpowiadać potwierdzeniem.

Binarna wersja programu klienta jest dostępna w katalogu: /home/samba/borkowskim/udp. UWAGA są dwie wersje dla różnych sal.

Program serwera kończy się po otrzymaniu SIGINT.

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



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