Powrót na stronę UNIX

Aplikacja typu klient serwer. Program serwera służy rozsyłaniu podłączonym klientom wiadomości tekstowych. Każda linia tekstu (zakończona RETURN, ale nie więcej niż 80 znaków) wpisana na konsoli serwera jest rozsyłana do wszystkich podłączonych klientów, którzy wypisują ją na stdout.

Serwer kończy działanie wraz z końcem tekstu (EOF) na stdin (C-d). Oba programy można zakończyć natychmiast SIGINT (C-c), serwer w takim przypadku ma skasować plik socket'u i pozamykać socket'y klientów. Oba programy wywoływane są z nazwą socket'u jako parametrem. Serwer musi się liczyć z nagłym końcem jednego z klientów. Klient musi rozpoznać koniec programu serwera i zakończyć się w sposób normalny.

UWAGI:

  1. Piszecie Państwo tylko kod serwera, binarna wersja gotowego programu (zarówno klient jak i serwer) będzie dostępna chwile po rozpoczęciu zajęć w katalogu:/home2/samba/borkowskim/unix/. Nie druga grupa nie pisze klienta, dostaną inne zadanie;-)
  2. Komunikaty przesyłane socket'em mają zawsze 80 znaków.
  3. Należy użyć lokalnych socket'ów w stylu połączeniowym (nie datagramy).
  4. Bez biblioteki obsługującej standardowe operacje (socket, bind, connect itd.) nie sposób zdążyć w 90 minut, można użyć funkcji z wykładu lub z zeszłorocznych zadań.
  5. Należy zwrócić uwagę na rozwiązanie C-c w serwerze, ma ono działać bez znacznych przestojów wszędzie tam gdzie to możliwe czyli podczas: czekania na wejście z klawiatury lub połączenie na socket'cie serwera oraz podczas accept'a. Wszędzie indziej można czekać na koniec operacji. Brak odpowiednich mechanizmów lub zwykły exit w obsłudze sygnału oznacza -2p
  6. Maksymalna liczba równocześnie podłączonych klientów nie może przekraczać 10.
  7. Zarówno program serwera jak i klienta ma działać jako jeden proces.
  8. Program wywołany bez parametrów wypisuje USAGE.
  9. 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