Beispiele für Unix−Socket – Server
Um einen Prozess zu einem TCP-Server zu machen, müssen Sie die folgenden Schritte ausführen –
-
Erstellen Sie einen Socket mit dem Systemaufruf socket().
-
Binden Sie den Socket mit dem Systemaufruf bind() an eine Adresse. Bei einem Server-Socket im Internet besteht eine Adresse aus einer Portnummer auf dem Hostcomputer.
-
Mit dem Systemaufruf listen()auf Verbindungen lauschen.
-
Akzeptieren Sie eine Verbindung mit dem Systemaufruf accept(). Dieser Aufruf wird normalerweise blockiert, bis ein Client eine Verbindung zum Server herstellt.
-
Senden und empfangen Sie Daten mit den Systemaufrufen read() und write().
Lassen Sie uns nun diese Schritte in Form von Quellcode setzen. Fügen Sie diesen Code in den Dateiserver ein.c und kompilieren Sie es mit dem GCC-Compiler.
Mehrere Verbindungen verarbeiten
Damit der Server mehrere gleichzeitige Verbindungen verarbeiten kann, nehmen wir die folgenden Änderungen im obigen Code vor:
-
Setzen Sie die accept−Anweisung und den folgenden Code in eine Endlosschleife.
-
Nachdem eine Verbindung hergestellt wurde, rufen Sie fork() auf, um einen neuen Prozess zu erstellen.
-
Der untergeordnete Prozess schließt sockfd und ruft die Funktion doprocessing auf, wobei der neue Socket-Dateideskriptor als Argument übergeben wird. Wenn die beiden Prozesse ihre Konversation abgeschlossen haben, wie durch die Rückgabe von doprocessing() angezeigt, wird dieser Prozess einfach beendet.
-
Der übergeordnete Prozess schließt newsockfd. Da sich der gesamte Code in einer Endlosschleife befindet, kehrt er zur accept-Anweisung zurück, um auf die nächste Verbindung zu warten.
Die folgende Codesequenz zeigt eine einfache Implementierung der Doprocessing-Funktion.