Senden und empfangen Sie UDP -Pakete über Python

Senden und empfangen Sie UDP -Pakete über Python
Wir kennen bereits zwei Hauptprotokolle für Transportschicht wie TCP und UDP. Für weitere Informationen zu TCP und UDP können Sie den Referenzabschnitt überprüfen. In diesem Artikel lernen wir, wie Sie UDP -Pakete mit dem Python -Programm senden und empfangen.

Erwartungen:

Hier sind einige wichtige Punkte aus diesem Artikel erfahren

  1. Senden eines Textes mit dem Python -Programm, das das UDP -Protokoll verwendet.
  2. Empfangen eines Textes mit dem Python -Programm, das das UDP -Protokoll verwendet.
  3. Überprüfen Sie das UDP -Paket in Wireshark.
  4. Erfahren Sie mehr über den Python -Code, um UDP -Pakete zu senden und zu empfangen.

Allgemeines Einrichten von Diagramm:

System A und B sollten in der Lage sein, sich gegenseitig zu pingen.

Annahmen oder Einschränkungen:

  1. Beide Systeme sollten Linux mit Ubuntu haben. Der Code kann auf einem anderen Betriebssystem wie Windows10, Mac usw. funktionieren oder nicht.
  2. Beide Systeme sollten Python Version 3 haben. Dieser Code kann auf Python 2 funktionieren oder nicht.7 Version.

HINWEIS: Sie können die Referenz überprüfen, um UDP -Pakete über Linux CLI zu senden und zu empfangen, bevor Sie Python -Dateien entgehen, um dieselbe Aufgabe zu erledigen.

Python -Dateien:

Es gibt zwei Python -Dateien Server.py Und Klient.py. Die Serverdatei und die Clientdatei sollten im Serversystem und im Client -System vorhanden sein.

Server.py

Socket importieren
Importsystem
Wenn Len (sys.argv) == 3:
# "IP -Adresse des Servers" und auch die "Portnummer" aus Argument 1 und Argument 2 erhalten
IP = sys.Argv [1]
port = int (sys.argv [2])
anders:
Print ("Run Like: Python3 Server.py ")
Ausgang (1)
# Erstellen Sie einen UDP -Socket
S = Socket.Sockel (Sockel.Af_inet, Sockel.SOCK_DGRAM)
# Binden Sie den Socket an den Port
server_address = (IP, Port)
S.bind (server_address)
Drucken ("Do Strg+C, um das Programm zu verlassen !!"))
während wahr:
print ("####### Server hört ##########“)
Daten, Adresse = s.recvfrom (4096)
print ("\ n \ n 2. Server empfangen: ", Daten.decode ('utf-8'), "\ n \ n")
send_data = input ("Geben Sie einen Text an send =>") ein
S.sendTo (send_data.codieren ('utf-8'), Adresse)
print ("\ n \ n 1. Server gesendet: ", send_data," \ n \ n ")

Klient.py

Socket importieren
Importsystem
Wenn Len (sys.argv) == 3:
# "IP -Adresse des Servers" und auch die "Portnummer" aus Argument 1 und Argument 2 erhalten
IP = sys.Argv [1]
port = int (sys.argv [2])
anders:
print ("rennen wie: python3 Client.py ")
Ausgang (1)
# Socket für den Server erstellen
S = Socket.Sockel (Sockel.Af_inet, Sockel.SOCK_DGRAM, 0)
Drucken ("Do Strg+C, um das Programm zu verlassen !!"))
# Senden wir Daten über das UDP -Protokoll
während wahr:
send_data = input ("Geben Sie einen Text an send =>");
S.sendTo (send_data.codode ('utf-8'), (ip, port))
print ("\ n \ n 1. Client gesendet: ", send_data," \ n \ n ")
Daten, Adresse = s.recvfrom (4096)
print ("\ n \ n 2. Client empfangen: ", Daten.decode ('utf-8'), "\ n \ n")
# Schließen Sie den Sockel
S.schließen()

UDP -Paket senden/empfangen:

Nehmen wir ein Beispiel, wie wir das UDP -Paket von System A nach System B senden werden. Im Server-Client-Konzept müssen wir den Server auf System B Side und Client auf System A A-Seite ausführen.

Außerdem haben wir gültige IP -Adressen.

System A IP: 192.168.1.6
System B IP: 192.168.1.102

Im Gegensatz zum Senden und Empfangen von UDP -Paketen über Linux CLI werden wir ausführen Server.py im System, B [192.168.1.102] Und dann werden wir rennen Klient.py im System A [192.168.1.6].

So führen Sie Server aus.PY im Jahr 192.168.1.102?

Hier ist der Befehl zum Ausführen von Server.py

$ python3 Server.PY 192.168.1.102 4444

Hier ist der Screenshot

Hier gibt es zwei Argumente für das Python -Programm. 1st Argument ist die IP -Adresse des Servers selbst, hier seine 192.168.1.102 und 2nd Argument ist Port, welcher Server zuhören wird, hier haben wir 4444 ausgewählt.

So leiten Sie Kunden.PY im Jahr 192.168.1.6?

Hier ist der Befehl zum Ausführen von Kunden.py

$ python3 Client.PY 192.168.1.102 4444

Hier ist der Screenshot

Hier gibt es zwei Argumente für das Python -Programm. 1st Argument ist die IP -Adresse des Servers, hier seine 192.168.1.102 und 2nd Argument ist Port, in dem der Server ausgeführt wird. Für unser Beispiel ist es 4444.

Senden oder empfangen Sie einen Text:

Wie Sie sehen, sind wir bereit, zwischen zwei Systemen zu kommunizieren. Aber wir müssen zuerst vom Kunden beginnen. Geben wir etwas in den Client ein und prüfen, ob es auf Server erreicht oder nicht.

Daten vom Client senden: "Ich bin vom Kunden"

Screenshot Form Client:

Jetzt sollte diese Client -Nachricht zum Server kommen. Hier ist der Server -Screenshot.

Jetzt können wir auf der Serverseite auch sehen, dass wir auch die Möglichkeit haben, etwas an den Client zu senden. Versuchen wir das.

Daten vom Client senden: "Ich bin vom Server"

Server Screenshot:

Und hier ist der Screenshot auf der Clientseite.

Jetzt dauert dies unendliche Zeiten, bis wir das Python -Programm mit Strg+C einstellen.

Überprüfen Sie das UDP -Paket in Wireshark:

Jetzt haben wir eine Kommunikation gemacht, aber wie können wir erfahren, dass UDP verwendet wurde, um diese Pakete zu senden oder zu empfangen. So können wir die Capture in Wireshark überprüfen.

Lassen Sie uns das Paket sehen, wenn der Kunde [192).168.1.6] Daten gesendet ["Ich bin von Client"] an Server [192.168.1.6].

Code Erläuterung:

Für die Erläuterung des grundlegenden Python -Code.

Wir werden nur wichtige Zeilencodes für die Client- und Server -Python -Datei erklären. Es gibt nützliche Kommentare im Client- und Servercode.

Client -Code Erläuterung:

Wenn Len (sys.argv) == 3:

Die obige Zeile ist erforderlich, um zu überprüfen, ob der Benutzer die erforderlichen obligatorischen Argumente bestanden hat. Oder sonst wird das Programm beendet. Gleiche Überprüfung ist im Serverprogramm vorhanden.

S = Socket.Sockel (Sockel.Af_inet, Sockel.SOCK_DGRAM, 0)

Die obige Zeile besteht darin, einen Socket -Server mit UDP zu erstellen [SOCK_DGRAM] Protokoll. Der gleiche Code ist auf dem Server vorhanden.py.

während wahr:

Programm in unendlicher Schleife ausführen, bis der Benutzer Strg+C durchführt. Der gleiche Code ist auf dem Server vorhanden.py.

S.sendTo (send_data.codode ('utf-8'), (ip, port))

Daten für genannte Senden IP Und Hafen Nummer.

Daten, Adresse = s.recvfrom (4096)

Daten vom Server zu erhalten. Der gleiche Code ist auf dem Server vorhanden.py.

Servercode Erläuterung:

S.sendTo (send_data.codieren ('utf-8'), Adresse)

Daten an die Client -Adresse senden.

Abschluss:

Wir können UDP -Daten mit dem Python -Programm senden oder empfangen. Intern wird der Server -Client -Mechanismus verwendet.

Verweise:

TCP zu verstehen: https: // linuxhint.com/tcp_packet_capture_analysis/
UDP zu verstehen: https: // linuxhint.com/udp_wireshark_analysis/
Senden und empfangen Sie UDP -Pakete über Linux CLI:
https: // linuxHint.com/send_receive_udp_packets_linux_cli/
Python Socket -Dateiübertragung senden:
https: // linuxHint.com/python_socket_file_transfer_send/