Powrót na stronę UNIX

Napisz dwa programy pracujące w architekturze klient-serwer poprzez połączenie UDP. Zadanie programu klienta polega na wysłaniu pliku podzielonego na datagramy. Zadanie programu serwera polega na odbieraniu plików przesyłanych przez socket i wypisywaniu ich na ekran (bez informacji o pliku z którego dane pochodzą).

Każdy wysłany do serwera pakiet musi być potwierdzony odpowiednim komunikatem zwrotnym, w razie braku takiego zwrotnego komunikatu (czekamy 0,5s) należy ponawiać wysłanie pakietu. W razie 5 kolejnych niepowodzeń program klienta powinien zakończyć działanie. Potwierdzenia też mogą zaginąć w sieci, ale program powinien sobie i z tym radzić - serwer nie może dwa razy wypisać tego samego fragmentu tekstu.

Wszystkie dodatkowe dane (wszystko poza tekstem z pliku) przesyłane między serwerem i klientem mają mieć postać liczb typu int32_t. Należ przyjąć, że rozmiar przesyłanych jednorazowo danych (tekst z pliku i dane sterujące) nie może przekroczyć 576B. Naraz serwer może odbierać maksymalnie 5 plików, 6 jednoczesna transmisja ma być zignorowana.

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

  • Zadanie będzie sprawdzane przez Marcina Borkowskiego, należy je wgrać do katalogu /home2/samba/borkowskim/unix/ .


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