Powrót na stronę UNIX

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

Klient kończy działanie wraz z końcem tekstu (EOF) na stdin (C-d). Oba programy można zakończyć 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/.
  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 połączenie na socket'cie serwera, podczas accept'a, lub podczas czekania na dane od klientów. 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. Należy zapewnić szybkie rozsyłanie danych od klientów, w szczególności błędem będzie pozwolenie jednemu z klientów na blokownie innych bardzo dużą ilością komunikatów -1p
  7. Maksymalna liczba równocześnie podłączonych klientów nie może przekraczać 10.
  8. Zarówno program serwera jak i klienta ma działać jako jeden proces.
  9. Program wywołany bez parametrów wypisuje USAGE.
  10. 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