Unix Socket – Server Examples
aby proces stał się serwerem TCP, należy wykonać następujące czynności: kroki podane poniżej −
-
Utwórz gniazdo z wywołaniem systemowym socket ().
-
binduje gniazdo pod adres za pomocą funkcji systemowej bind (). W przypadku gniazda serwera w Internecie adres składa się z numeru portu na komputerze-hoście.
-
Listen dla połączeń z wywołaniem systemowym listen ().
-
Akceptuj połączenie za pomocą funkcji systemowej accept (). To wywołanie zazwyczaj blokuje się, dopóki klient nie połączy się z serwerem.
-
wysyłanie i odbieranie danych za pomocą wywołań systemowych read() I write ().
teraz postawmy te kroki w postaci kodu źródłowego. Umieść ten kod na serwerze plików.c i skompilować go za pomocą kompilatora gcc.
Obsługa wielu połączeń
aby umożliwić serwerowi obsługę wielu jednoczesnych połączeń, dokonujemy następujących zmian w powyższym kodzie −
-
umieszczamy instrukcję accept i następujący kod w nieskończonej pętli.
-
Po nawiązaniu połączenia, wywołanie fork (), aby utworzyć nowy proces.
-
proces potomny zamknie sockfd i wywoła funkcję doprocessing, przekazując jako argument nowy deskryptor pliku gniazda. Gdy oba procesy zakończą konwersację, na co wskazuje powrót doprocessing (), proces ten po prostu się kończy.
-
proces nadrzędny zamyka newsockfd. Ponieważ cały ten kod jest w nieskończonej pętli, powróci on do instrukcji accept, aby poczekać na następne połączenie.
poniższy kod pokazuje prostą implementację funkcji doprocessingu.