Powrót na stronę UNIX

Tematyka zadania: gniazda tcp
Rodzaj sprawdzania: po zajęciach
Czas pisania: 90 minut
Sprawdzający: Marcin Borkowski
Autor Zadania: Waldemar Kurkowski

Napisz program serwer symulujący międzynarodową firmę informatyczną. Posiada ona jeden superkomputer i N stanowisk umożliwiających dostęp do niego z siedzib firmy rozsianych pocałym świecie.

Główny proces będzie symulował superkomputer. Najpierw tworzy N procesów potomnych symulujących stanowiska dostępowe. Następnie czeka na sygnały SIGRTMIN przychodzące ze stanowisk. Po otrzymaniu takiego sygnału odczytuje z niego poziom skomplikowania zadania K (z przedziału [5,10]) i wykonuje zlecone obliczenia (zasypia na K sekund). Następnie wysyła do klienta, który zlecił zadanie sygnał SIGRTMAX.

Stanowiska dostępowe (procesy potomne) oczekują na połączenia z komputerów pracowników w danej siedzibie na konkretnym porcie (określonym podczas wywołania programu). Gdy ktoś się podłączy czekamy, aż złoży zamówienie (wyśle wiadomość).

Podaje on tylko stopień złożoności zadania K.

Można przyjąć, że zamówienie składa się najwyżej z dwóch znaków (liczby dwucyfrowej).

Jeśli złożone zamówienie jest poprawne, to wysyłamy do superkomputera (procesu głównego) sygnał SIGRTMIN z liczbą K. Następnie oczekujemy na SIGRTMAX od procesu głównego i zamykamy połączenie z pracownikiem (socket).

Od momentu podłączenia się pracownika do momentu otrzymania SIGRTMAX inni klienci nie mogą się połączyć, Czyli podczas oczekiwania na przeprowadzenie obliczeń nie akceptujemy innych połączeń.

Program kończy się w wyniku naciśnięcia CTRL+C. Wtedy nie przyjmujemy już nowych zamówień i kończymy program.

Jeżeli klient zamknie socket przed zrealizowaniem zamówienia, zamykamy socket i dalej realizujemy zamówienia.

Parametry wywołania programu : N - ilość stanowisk, N * numer portu

Za program klient będzie służył telnet.

Szczególną uwagę zwracamy na:

Powrót na stronę UNIX