Python

Senden und empfangen Sie UDP-Pakete über Python

Senden und empfangen Sie UDP-Pakete über Python
Wir kennen bereits zwei Hauptprotokolle der Transportschicht wie TCP und UDP. Weitere Informationen zu TCP und UDP finden Sie im Referenzabschnitt.  In diesem Artikel erfahren Sie, wie Sie UDP-Pakete mit dem Python-Programm senden und empfangen.

Erwartungen:

Hier sind einige wichtige Punkte, die Sie aus diesem Artikel lernen können

  1. Senden von Text mit einem Python-Programm, das das UDP-Protokoll verwendet.
  2. Empfangen von Text mit einem Python-Programm, das das UDP-Protokoll verwendet.
  3. UDP-Paket in Wireshark prüfen.
  4. Erfahren Sie mehr über Python-Code zum Senden und Empfangen von UDP-Paketen.

Allgemeines Setup-Diagramm:

System A und B sollten sich gegenseitig pingen können.

Annahmen oder Einschränkungen:

  1. Beide Systeme sollten Linux mit Ubuntu haben. Der Code kann auf anderen Betriebssystemen 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 zum Ausprobieren von UDP-Paketen zum Senden und Empfangen über die Linux-CLI überprüfen, bevor Sie Python-Dateien verwenden, um dieselbe Aufgabe auszuführen.

Python-Dateien:

Es gibt zwei Python-Dateien Server.py und Klient.py. Server-Datei und Client-Datei sollten im Server-System bzw. im Client-System vorhanden sein.

Server.py

Steckdose importieren
Importsystem
if len(sys.argv) == 3:
# Holen Sie sich die "IP-Adresse des Servers" und auch die "Portnummer" von
Argument 1 und Argument 2
ip = sys.argv[1]
port = int(sys.argv[2])
sonst:
print("Ausführen wie: Python3-Server.py ")
Ausgang(1)
# Erstellen Sie einen UDP-Socket
s = Buchse.Steckdose (Steckdose).AF_INET, Buchse.SOCK_DGRAM)
# Binden Sie die Buchse an den Port
server_address = (IP, Port)
so.bind(server_adresse)
print("Beenden Sie das Programm mit Strg+c !!")
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 Text zum Senden ein =>")
so.sendto(send_data.encode('utf-8'), Adresse)
print("\n\n 1. Server gesendet : ", send_data,"\n\n")

Klient.py

Steckdose importieren
Importsystem
if len(sys.argv) == 3:
# Holen Sie sich "IP-Adresse des Servers" und auch die "Portnummer" aus Argument 1 und Argument 2
ip = sys.argv[1]
port = int(sys.argv[2])
sonst:
print("Ausführen wie: Python3-Client.py ")
Ausgang(1)
# Socket für Server erstellen
s = Buchse.Steckdose (Steckdose).AF_INET, Buchse.SOCK_DGRAM, 0)
print("Beenden Sie das Programm mit Strg+c !!")
# Lassen Sie uns Daten über das UDP-Protokoll senden
während Wahr:
send_data = input("Geben Sie Text zum Senden ein =>");
so.sendto(send_data.encode('utf-8'), (ip, port))
print("\n\n 1. Client gesendet : ", send_data, "\n\n")
Daten, Adresse = s.recvfrom(4096)
print("\n\n 2. Kunde erhalten : ", Daten.decode('utf-8'), "\n\n")
# schließe die Steckdose
so.schließen()

UDP-Paket senden/empfangen:

Nehmen wir ein Beispiel, wie wir ein UDP-Paket von System A an System B senden werden. Im Server-Client-Konzept müssen wir also den Server auf der Seite von System B und den Client auf der Seite von System A 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 die Linux-CLI werden wir jetzt ausgeführt Server.py im System, B [192.168.1.102] und dann werden wir laufen Klient.py im System A [192.168.1.6].

So führen Sie den Server aus.py in 192.168.1.102?

Hier ist der Befehl zum Ausführen des Servers.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 der Port, der vom Server überwacht wird, hier haben wir 4444 gewählt.

So führen Sie den Client aus.py in 192.168.1.6?

Hier ist der Befehl zum Ausführen des Clients.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 sind es 192.168.1.102 und 2nd Argument ist Port, auf dem der Server läuft. Für unser Beispiel ist es 4444.

Senden oder empfangen Sie eine SMS:

Wie Sie sehen können, sind wir nun bereit, zwischen zwei Systemen zu kommunizieren. Aber wir müssen zuerst beim Client beginnen. Geben wir etwas in den Client ein und sehen, ob es den Server erreicht oder nicht.

Daten vom Client senden: „Ich bin vom Kunden“

Screenshot-Formular-Client:

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

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

Daten vom Client senden: „Ich bin vom Server“

Server-Screenshot:

Und hier ist der Screenshot auf der Clientseite.

Das wird jetzt unendlich oft so weitergehen, bis wir das Python-Programm mit Strg+c . stoppen.

UDP-Paket in Wireshark prüfen:

Jetzt haben wir etwas kommuniziert, aber woher wissen wir, dass UDP zum Senden oder Empfangen dieser Pakete verwendet wurde?. So können wir die Aufnahme in Wireshark überprüfen.

Sehen wir uns das Paket an, wenn der Client [192.168.1.6] hat Daten ["I am from Client"] an den Server gesendet [192.168.1.6].

Code-Erklärung:

Eine grundlegende Erklärung des Python-Codes finden Sie unter „Python Socket File Transfer Send“ im Referenzabschnitt.

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

Erklärung des Kundencodes:

if len(sys.argv) == 3:

Die obige Zeile ist erforderlich, um zu überprüfen, ob der Benutzer die erforderlichen obligatorischen Argumente übergeben hat. Sonst wird das Programm beendet. Dieselbe Prüfung ist im Serverprogramm vorhanden.

s = Buchse.Steckdose (Steckdose).AF_INET, Buchse.SOCK_DGRAM, 0)

Die obige Zeile dient zum Erstellen eines Socket-Servers mit UDP [SOCK_DGRAM] Protokoll. Derselbe Code ist auf dem Server vorhanden.py.

während Wahr:

Um das Programm in einer Endlosschleife auszuführen, bis der Benutzer Strg+c . tut. Derselbe Code ist auf dem Server vorhanden.py.

so.sendto(send_data.encode('utf-8'), (ip, port))

Zum Senden von Daten für erwähnte ip und Hafen Nummer.

Daten, Adresse = s.recvfrom(4096)

Um Daten vom Server zu empfangen. Derselbe Code ist auf dem Server vorhanden.py.

Erklärung des Servercodes:

so.sendto(send_data.encode('utf-8'), Adresse)

Daten an Kundenadresse senden.

Fazit:

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

Verweise:

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

Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...
Linker Mausklick funktioniert nicht unter Windows 10
Wenn Sie eine dedizierte Maus mit Ihrem Laptop oder Desktop-Computer verwenden, aber die linker Mausklick funktioniert nicht unter Windows 10/8/7 aus ...
Cursor springt oder bewegt sich zufällig während der Eingabe in Windows 10
Wenn Sie feststellen, dass Ihr Mauszeiger während der Eingabe auf einem Windows-Laptop oder -Computer automatisch und zufällig springt oder sich von s...