POSIX -Sockel in C

POSIX -Sockel in C

Innerhalb der Socket -Programmierung müssen wir zwei Knoten haben, ich.e., Client und ein Server. Ein Endpunkt für die Übertragung ist als POSIX -Sockel oder nur als Sockel bekannt. Für Sender und Empfänger A und B, um miteinander zu interagieren, müssen beide Seiten zunächst einen Link über ihre jeweiligen Endpunkte hinweg erstellen. Ein weiterer Socket (Endpoint) sucht den ersten Socket, um einen Link zu generieren, während der erste Socket auf einem bestimmten Port an einer IP -Adresse reagiert. Während sich der Client dem Server nähert, generiert der Server den Listener -Socket. In diesem Leitfaden werden wir die Verwendung der Socket -Funktion aus der POSIX -Bibliothek von C erläutern, während wir die Ubuntu 20 verwenden.04 Linux -Betriebssystem.

Serverseite:

Das Schreiben von Client- und Servercode ist für die Socket -Programmierung erforderlich. Ein einzelner Knoten oder Server kann mehrere Clients damit verbunden haben. Die erforderlichen Header -Dateien, die Sie während der Programmierhöhlen einsetzen sollten, sind in den ersten acht Zeilen enthalten. Indem wir den Wert auf 8080 festlegen, definieren wir die globale Port -Variable in Port. Wenn Port 8080 nicht verfügbar ist, können wir ihn gegen einen anderen Port tauschen, der ist.

Wir deklarieren einige Variablen vom Typ Ganzzahl in der Hauptmethode, die wir später verwenden werden. Diese Variablen enthalten diejenigen für den Serverdateideskriptor (Server_File_DESC), den neuen Socket (new_socket) und der vom Client (Value_read) gelesene Wert oder die Nachricht. Die Adressen für die Internetadressenfamilie werden in einer Struktur des Typs Sockaddr gespeichert, das in der Linie nach der Leitung deklariert wird.

Später definierten wir Option = 1, Adresslänge = sizeof (socket_address) und puffer [1024], die ursprünglich auf 0 eingestellt und für Nachrichten verwendet wurden, die aus Clients einer Größe von 1024 Bytes abgerufen wurden. Die Nachrichtenvariable, in der die vom Server an die damit verbundene Clients verbundene Nachricht gespeichert ist, kommt als nächstes. In der nächsten Zeile erstellen wir einen Socket und übergeben sie AF_INET (die als AF INET bekannte Adressfamilie wird verwendet, um die Arten von Adressen anzugeben, mit denen Ihr Sockel eine Verbindung herstellen kann (in diesem Fall IP (Internet Protocol) V4/V6 -Adressen ).

TCP ist ein Übertragungskommunikationsprotokoll, das ein verbindungsbasiertes Protokoll ist. Sobald die Verbindung zwischen zwei Parteien (Client-Server) hergestellt ist. Hier ist der Snap des im Server geschriebenen Server -Seitencode.c Datei.

Jetzt befestigen wir den Sockel mit Port 8080 mit gewaltsamer. Danach initialisieren wir die Socket -Familie, die Adresse und den Port. Danach binden wir die Socket -Adresse an Port 8080. Jetzt ist der Server bereit, eine Verbindung vom Client anzuhören. Deshalb drucken wir eine Nachricht vor der Hörmethode. Wenn ein Client mit diesem Port eine Verbindung zum Server herstellt, akzeptiert der Server die Client -Verbindung.

Wenn der Client und der Server verbunden sind, liest der Server die Nachricht über einen Puffer vom Client und zeigt sie auf dem Terminalbildschirm an. Ähnlich wie bei der Art und Weise, wie Clients Nachrichten von Servern erhalten, senden Sie Methoden, um eine Nachricht zu übertragen, und Socket -Informationen an Clients. Der Server zeigt dann eine Erfolgsnachricht an. Der Server schloss auch den Hör -Socket -Port auf dem Server.

Kundenseite:

Das folgende Bild zeigt den Client.c Dateincode -Snippet:

Der Client stellt eine Verbindung zum Server mithilfe einer Socket mit der Methode Connect () her, und wir haben auch die Serveradresse übergeben. Der Client und Server können kommunizieren, sobald die Verbindung effektiv hergestellt wurde. Zeigen Sie eine Fehlermeldung auf dem Terminalbildschirm an, wenn der Server ausgefallen ist oder der Client aus anderen Gründen keine Verbindung herstellen kann. Nach einer erfolgreichen Verbindung sendet der Client einen Socket, um eine Nachricht an den Server zu senden, die Nachricht vom Server mit einem Puffer in die Variable Lese -Lesevariable zu lesen und die Antwort des Servers auf dem Bildschirm anzuzeigen. Der Kunde schließt dann die Kommunikation mit dem verknüpften Socket ab.

Wir haben den Server zusammengestellt.C und Kunde.C -Dateien mit dem GCC -Compiler, und wir haben die Ergebnisse auf dem Server gespeichert.C und Kunde.c Ordner. Die Befehle zum Kompilieren der Server- und Client -Dateien sind unten aufgeführt.

Wir brauchten zwei verschiedene Terminals, einen für den Server und eine für den Client, um die Kommunikation zwischen ihnen zu erkennen. Drücken Sie Strg+Shift+N, um ein neues Terminal in Ubuntu zu starten. Eine Sache, die Sie beachten müssen, ist, dass der Server aktiv sein muss und auf eine Verbindung vom Client warten muss. Sie erhalten den Fehler „Verbindung mit dem Server fehlgeschlagen“, wenn der Server offline ist und aus irgendeinem Grund nicht angeschlossen ist, während der Client eine Verbindung zum Server herstellen möchte. Der folgende Snap zeigt diesen Fehler:

Wenn wir die Serverausgabendatei ausführen, wartet der Server darauf, dass der Client eine Verbindung herstellt, bevor die beiden möglicherweise kommunizieren. Einfach eingeben ./Server am frisch geöffneten Terminal, um den Server zu starten. Hier ist ein Screenshot, das zeigt, dass der Server in Betrieb ist und bereit ist, Verbindungen von Clients zu akzeptieren:

Es ist Zeit, den Kunden jetzt zu starten. Um die Kommunikation zwischen Client und Server zu initiieren, geben Sie "/Client" in einem neuen Terminal ein. Der Server antwortet dann und sendet eine Nachricht, die der Client liest, in einer Nachrichtenvariablen speichert und mithilfe einer Printf -Anweisung angezeigt wird. Die Nachricht des Kunden wurde auf dem Bildschirm Terminal unten angezeigt.

Wenn ein Client an einen Server angeschlossen ist, akzeptiert der Server eine Nachricht, um die Verbindung zu überprüfen. Die Nachricht des Kunden wird daher auf dem Bildschirm unten angezeigt. Anschließend benachrichtigt der Server den Client und zeigt eine Erfolgsnachricht an. Nach dieser erfolgreichen Kommunikation endet der Server die Verbindung mit dem Client.

Abschluss:

Wir sind mit genügend Erklärungen und Demonstrationen der Socket-Programmierung auf dem Client und der Server-Seite mit der POSIX-Bibliothek der C-Sprache fertig. Wir haben sowohl die Codeseiten der Socket -Programmierung kurz erklärt als auch hoffen, dass Sie aus den Beispielen lernen werden.