In der folgenden Abbildung wird der Ablauf einer Client/Server-Kommunikation unter Verwendung von Sockets bei einem verbindungsorientierten Protokoll gezeigt.

Abb. 14: Socketverwendung bei einem verbindungsorientierten Protokoll
Quelle: Vgl. [SOCB96], S. 53.
Der Server erzeugt einen Socket mit der socket-Funktion, oder anders, der Server fordert die Socket-Implementierung auf eine Socket-Datenstruktur bereitzustellen und einen Socket-Discriptor zurückzuliefern, der bei weiteren Funktionsaufrufen benötigt wird.
Als nächstes bindet der Server mit der bind-Funktion den Socket an einen lokalen Protokollport.
Mit der listen-Funktion wird der Socket angewiesen nach eingehenden Verbindungen Ausschau zu halten und entsprechende Verbindungsanforderungen zu bestätigen. Mit anderen Worten wird der Socket in den Lauschmodus versetzt.
Um allerdings Verbindung wirklich annehmen zu können,muß die accept-Funktion aufgerufen werden, die den Socket in Bereitschaft zur Reaktion versetzt.
Der Client erzeugt ebenfalls einen Socket mit der socket-Funktion. Die lokale Adresse ist beim Client allerdings von weniger großem Interesse, was einen Aufruf der bind-Funktion unnötig macht.
Die Netzwerkkommunikation wird dann mit der connect-Funktion initiiert.
Das Schreiben und Lesen von Daten zwischen Client und Server wird in diesem Fall mit den Funktionen write und read durchgeführt.
In der nächsten Abbildung wird die Verwendung von Sockets bei einem verbindungsfreien Protokoll dargestellt.
Abb. 15: Socketverwendung bei einem verbindungsfreien Protokoll
Wie auch der verbindungsorientierte Server, nutzt der verbindungsfreie Server die socket- und bind-Funktion zur Socket-Erzeugung und der Bindung.
Zum Empfangen von Daten benutzt der verbindungsfreie Server die recvfrom-Funktion, was beim Client die sendto-Funktion zur Folge hat. Zu beachten ist hier, daß die sendto-Funktion die Zieladresse als Parameter erwartet, um erfolgreich arbeiten zu können.
Die recvfrom-Funktion wartet nicht auf eine Verbindung, sondern reagiert auf alle Daten, die über den gebundenen Port eingehen. Von einem vom Socket empfangenen Datagramm speichert die recvfrom-Funktion die Netzwerkadresse des Prozesses, der das Datagramm verschickt hat, und das Datagramm selbst. Die gespeicherte Adresse dient zur Identifikation des sendenden Prozeß(Client). Der Server sendet ein Antwortdatagramm an die Adresse, die von der recvfrom-Funktion empfangen wurde.
Der Server sendet ein Antwortdatagramm an die Adresse, die von der recvfrom-Funktion empfangen wurde.