Unix Socket – Server Examples

reklamy

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.

reklamy



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.