Einführung in die Socket-Programmierung in Python

Bei der Socket-Programmierung wird die Kommunikation über ein Netzwerk zwischen zwei Sockets (Knoten) hergestellt. Der Server fungiert als Listener-Port, der eine bestimmte IP abhört, und der Client-Socket greift zur Kommunikation auf den Server-Socket zu. Um mit der Socket-Programmierung arbeiten zu können, müssen wir die Socket-Bibliothek importieren, die von Python bereitgestellt wird.

Python Socket Server

Ein Socket ist ein Endpunkt zum Senden oder Empfangen von Daten, daher benötigen wir für diesen Zweck einen Server und ein Client-Socket-Programm. In unserem Beispielprogramm hosten wir Server und Client auf demselben Computer. Wir können sogar über einen Servercode senden und empfangen. Es ist zu beachten, dass wir nur ein Serverprogramm haben können, während wir mehrere Clientprogramme haben können.

Als Standardprotokoll wird TCP (Transmission Control Protocol) ausgewählt. TCP ist zuverlässig, da die im Netzwerk abgelegten Pakete vom Absender erkannt und übertragen werden. TCP bietet auch die Datenlieferung in der richtigen Reihenfolge, dh die Reihenfolge, in der sie vom Absender in einer ähnlichen Reihenfolge gesendet werden, in der sie von der Anwendung gelesen werden.

server.py

Schauen Sie sich das folgende Programm an: server.py

Zeile 3: Socket ist eine vorinstallierte Bibliothek, für die ein Objekt erstellt wird. Dieses Socket-Modul wird in das Python-Programm importiert und später im Programm als Socket-Funktion verwendet. Hier erstellen wir ein Objekt, das die Socket-Funktion aufruft.

Zeile 4: socket.AF_INET entspricht IPV4 (Wenn man IPV6 verwenden möchte, kann socket.AF_INET6 verwendet werden. Dies bezieht sich auf die Socket-Familie. AF_INET gibt das Protokoll an, das für die Kommunikation verwendet wird. IPV4 und IPV6 sind unterschiedliche Übertragungssteuerungen Arten oder Protokolle der Datenübertragung über das Netzwerk.

IPV4 und IPV6 sind nur verschiedene Arten von IP-Adressen. Die Socket.AF_INET entspricht TCP. Das Transmission Control Protocol (TCP) arbeitet mit der IP und definiert, wie der Computer Datenpakete untereinander sendet.

Als nächstes wird TCP benötigt, dafür benötigen wir einen Socket.SOCK_STREAM, der Socket-Typ. TCP ist ein verbindungsorientiertes Protokoll, bei dem im Wesentlichen eine Drei-Wege-Handshake-Verbindung mit einem Server und einem Client hergestellt wird. Dann geben wir einen Hostnamen an, mit dem sich der Client verbindet.

Zeile 5: Für den Hostnamen kann entweder "localhost" oder "127.0.01" oder socket.gethostname () verwendet werden. Es erhält die IP-Adresse des Servers.

Das Obige sind die beiden Parameter, die wir für den Socket definieren.

Zeile 6: Wir haben normalerweise viele Ports in unserem System, daher müssen wir einen nicht verwendeten Host-Port verwenden. Jede vierstellige Zahl kann verwendet werden, da meistens die unteren Stellen belegt sind.

Zeile 7: Die bind () -Methode, die den Host und den Port an einen Socket bindet.

All diese Schritte sind erforderlich, um unseren Server zu starten. Jetzt müssen wir den Kunden machen. Wie bereits erwähnt, können wir mehrere Kunden haben.

Zeile 8: Wir haben die Möglichkeit, die Nummer des Clients anzugeben, der mit dem Server interagieren kann. Dies wird durch ablisten (6) erreicht. Es startet den TCP-Listener. Die Zahl gibt die Anzahl der Clients an, die interagieren können. Wenn zum Beispiel der 7. Client kommt, wird er fallengelassen.

Zeile 9: s.accept () akzeptiert die Anforderung vom Client und gibt zwei Objekte zurück, eines das Socket-Client-Objekt und das andere die Adresse. Die IP-Adresse ist die Adresse des Kunden, bei dem unser Kunde anwesend ist.

Zeile 10: Dies ist eher eine Benachrichtigung an den Server über die hergestellte Verbindung.

Zuletzt drucken wir eine Anweisung, die angezeigt werden soll, wenn beide Programme im Terminal ausgeführt werden. Nachdem wir mit unserem Serverprogramm fertig sind, werden wir das Clientprogramm ausschreiben.

Python Socket Client

Hier diskutieren wir über Python-Socket-Client:

client.py

Hier ist unser Programm für den Kunden: client.py

Das Client-Programm hat auch einen ähnlichen Socket, wie wir im Fall des Server-Programms sehen. Normalerweise wird das Client-Programm vom Server-Programm ausgeführt. Es befindet sich nicht in derselben Maschine wie in diesem Beispiel. Was wir mit Sockets erreichen wollen, ist die Kommunikation über Python-Programme auf einem lokal vernetzten Computer oder sogar über ein Remote-Netzwerk.

Zeile 8: Es gibt eine binding () -Methode im Serverprogramm, hier wird die connect () -Methode verwendet. Das Tupel hier übernimmt Host und Port in der Methode. Wir nehmen den gleichen Port, den wir in unserer server.py verwendet hatten

Wir müssen server.py und client.py auf verschiedenen Terminals ausführen. Auf diese Weise sehen wir, wie die Verbindung hergestellt wird.

Ausgabe:

Der Screenshot stammt von zwei verschiedenen Terminals, von denen eines in CMD und das andere in PowerShell in Windows geöffnet wurde. Das linke Fenster öffnet das Programm server.py und das rechte Terminal öffnet das Programm client.py.

Wir sehen die Ausgabe im serverseitigen Terminal gedruckt.

Zeichenfolge von einer Datei zur anderen senden

Wir werden versuchen, eine Nachricht vom Client zum Server zu senden. Wir werden eine Nachricht in das client.py-Programm schreiben.

1. client.py

Hier ist unser Programm für den Kunden: client.py

Zeile 9 und Zeile 10: Wir setzen die Nachricht in eine Variable und senden sie in Form von Bytes und konvertieren sie oder codieren sie im UTF-8-Format. (UTF ist ein Unicode-Standard, da alle Inhalte der Nachricht Zeichen sind und unter das Unicode-Diagramm fallen.) Wir sollen die Daten verschlüsseln und so klein wie möglich halten, da sonst die Übertragung zu einem bestimmten Zeitpunkt fehlschlagen würde.

Zeile 11: Wir beenden die Verbindung.

Im Serverprogramm nehmen wir die folgenden Änderungen vor.

2. server.py

Hier ist unser Programm für den Server: server.py

Zeile 11: Um die Verbindung aufzubauen, verwenden wir das Socket-Client-Objekt. Wir erwähnen die Puffergröße, indem wir der Methode 1024 Bytes (1 KB) hinzufügen und in der variablen Nachricht beibehalten.

Zeile 13: Dann drucken wir die Methode.

Ausgabe:

Wir öffnen beide Terminals wieder und sehen die folgende Ausgabe.

Fazit - Socket-Programmierung in Python

Die Grundlagen der Socket-Programmierung wurden hier behandelt, aber es muss beachtet werden, dass es sich um eine gewaltige Domäne handelt und dass es bei der Socket-Programmierung noch viele weitere Aspekte gibt. Wenn Sie die Grundlagen gut verstehen, können Sie mit komplexen Client-Server-Szenarien umgehen.

Empfohlene Artikel

Dies ist eine Anleitung zur Socket-Programmierung in Python. Hier diskutieren wir das Konzept von Python-Socket-Server und Python-Socket-Client mit Code-Implementierung. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Verschachtelte Python-Schleifen
  2. Die 15 wichtigsten Funktionen von Python
  3. Top 7 Python IDE für Windows
  4. Verschiedene Methoden in Python-Sets