Krajta

Odesílejte a přijímejte pakety UDP přes Python

Odesílejte a přijímejte pakety UDP přes Python
Již víme o dvou hlavních protokolech transportní vrstvy, jako jsou TCP a UDP. Další informace o TCP a UDP najdete v referenční sekci.  V tomto článku se naučíme, jak odesílat a přijímat pakety UDP pomocí programu python.

Očekávání:

Zde je několik klíčových bodů, z nichž se lze dozvědět z tohoto článku

  1. Odesílání textu pomocí programu python, který používá protokol UDP.
  2. Příjem textu pomocí programu python, který používá protokol UDP.
  3. Zkontrolujte paket UDP ve Wiresharku.
  4. Další informace o kódu pythonu pro odesílání a přijímání paketů UDP.

Obecné schéma nastavení:

Systémy A a B by se měly navzájem pingovat.

Předpoklady nebo omezení:

  1. Oba systémy by měly mít Linux s Ubuntu. Tento kód může nebo nemusí fungovat na jiném operačním systému, jako je Windows10, MAC atd.
  2. Oba systémy by měly mít python verze 3. Tento kód může nebo nemusí fungovat na pythonu 2.7 verze.

Poznámka: Můžete zkontrolovat odkaz na vyzkoušení Odesílat a přijímat pakety UDP prostřednictvím rozhraní Linux CLI před přechodem na to, aby soubory python provedly stejnou úlohu.

Soubory Pythonu:

Existují dva soubory pythonu serveru.py a klient.py. soubor serveru a soubor klienta by měl být přítomen v systému serveru, respektive systému klienta.

Server.py

importovat zásuvku
import sys
if len (sys.argv) == 3:
# Získejte „IP adresu serveru“ a také „číslo portu“ z
argument 1 a argument 2
ip = sys.argv [1]
port = int (sys.argv [2])
jiný:
print ("Spustit jako: server python3.py ")
výstup (1)
# Vytvořte soket UDP
s = zásuvka.zásuvka (zásuvka.AF_INET, socket.SOCK_DGRAM)
# Připojte zásuvku k portu
server_address = (ip, port)
s.svázat (server_address)
print ("Ukončete Ctrl + c pro ukončení programu !!")
zatímco je pravda:
tisk ("####### Server naslouchá #######")
data, adresa = s.recvfrom (4096)
print ("\ n \ n 2. Server obdržel: „, data.dekódovat ('utf-8'), "\ n \ n")
send_data = input ("Napište nějaký text k odeslání =>")
s.sendto (send_data.kódování ('utf-8'), adresa)
print ("\ n \ n 1. Server sent: ", send_data," \ n \ n ")

Klient.py

importovat zásuvku
import sys
if len (sys.argv) == 3:
# Získejte „IP adresu serveru“ a také „číslo portu“ z argumentu 1 a argumentu 2
ip = sys.argv [1]
port = int (sys.argv [2])
jiný:
print ("Spustit jako: python3 klient.py ")
výstup (1)
# Vytvořit soket pro server
s = zásuvka.zásuvka (zásuvka.AF_INET, socket.SOCK_DGRAM, 0)
print ("Ukončete Ctrl + c pro ukončení programu !!")
# Posíláme data prostřednictvím protokolu UDP
zatímco je pravda:
send_data = input ("Napište nějaký text k odeslání =>");
s.sendto (send_data.encode ('utf-8'), (ip, port))
print ("\ n \ n 1. Klient odeslán: ", send_data," \ n \ n ")
data, adresa = s.recvfrom (4096)
print ("\ n \ n 2. Klient obdržel: „, data.dekódovat ('utf-8'), "\ n \ n")
# zavřete zásuvku
s.zavřít()

Odeslat / přijmout paket UDP:

Vezměme si příklad, jako bychom poslali UDP paket ze systému A do systému B. Takže v konceptu server-klient musíme spustit server na straně systému B a klienta na straně systému A.

Také máme platné adresy IP.

Systém A IP: 192.168.1.6
Systém B IP: 192.168.1.102

Nyní na rozdíl od odesílání a přijímání paketů UDP prostřednictvím rozhraní Linux CLI spustíme serveru.py v systému, B [192.168.1.102] a pak budeme běžet klient.py v systému A [192.168.1.6].

Jak spustit server.py v 192.168.1.102?

Zde je příkaz ke spuštění serveru.py

$ python3 server.py 192.168.1.102 4444

Zde je snímek obrazovky

Zde existují dva argumenty pro program python. 1Svatý argumentem je IP adresa samotného serveru, zde jeho 192.168.1.102 a 2nd argument je port, který bude server poslouchat, zde jsme vybrali 4444.

Jak spustit klienta.py v 192.168.1.6?

Zde je příkaz ke spuštění klienta.py

$ python3 klient.py 192.168.1.102 4444

Zde je snímek obrazovky

Zde existují dva argumenty pro program python. 1Svatý argumentem je IP adresa serveru, zde jeho 192.168.1.102 a 2nd argument je port, kde běží server. Pro náš příklad je to 4444.

Odeslat nebo přijmout text:

Nyní můžete vidět, že jsme připraveni komunikovat mezi dvěma systémy. Nejprve však musíme začít od klienta. Pojďme něco napsat do klienta a uvidíme, jestli to dosáhne na server nebo ne.

Odeslat data z klienta: „Jsem od klienta“

Klient formuláře obrazovky:

Nyní by tato klientská zpráva měla přijít na server. Zde je snímek obrazovky serveru.

Nyní vidíme na straně serveru také máme možnost něco poslat klientovi. Zkusme to.

Odeslat data z klienta: „Jsem ze serveru“

Screenshot serveru:

A tady je screenshot na straně klienta.

Nyní to bude trvat nekonečně dlouho, dokud nezastavíme program python pomocí Ctrl + c.

Zkontrolujte paket UDP ve Wiresharku:

Nyní jsme provedli nějakou komunikaci, ale jak zjistíme, že k odesílání nebo přijímání těchto paketů byl použit UDP. Můžeme tedy zkontrolovat zachycení ve Wiresharku.

Podívejme se na paket, když klient [192.168.1.6] odeslal data [„Jsem od klienta“] na server [192.168.1.6].

Vysvětlení kódu:

Základní vysvětlení kódu pythonu naleznete v části „Odeslání přenosu souboru Python Socket“ v referenční části.

Vysvětlíme pouze důležité kódy řádků pro klientský a serverový pythonový soubor. Uvnitř kódu klienta a serveru jsou užitečné komentáře.

Vysvětlení klientského kódu:

if len (sys.argv) == 3:

Výše uvedený řádek je vyžadován ke kontrole, zda uživatel předal povinné povinné argumenty. Jinak program skončí. Stejná kontrola je i v programu serveru.

s = zásuvka.zásuvka (zásuvka.AF_INET, socket.SOCK_DGRAM, 0)

Výše uvedený řádek je vytvořit server soketu s UDP [SOCK_DGRAM] protokol. Stejný kód je na serveru.py.

zatímco je pravda:

Spuštění programu v nekonečné smyčce, dokud uživatel neprovede Ctrl + c. Stejný kód je na serveru.py.

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

Chcete-li odeslat data pro uvedené ip a přístav číslo.

data, adresa = s.recvfrom (4096)

Chcete-li přijímat data pocházející ze serveru. Stejný kód je na serveru.py.

Vysvětlení kódu serveru:

s.sendto (send_data.kódování ('utf-8'), adresa)

Zašlete data na adresu klienta.

Závěr:

Můžeme odesílat nebo přijímat data UDP pomocí programu python. Interně používá mechanismus klient serveru.

Reference:

Pro pochopení TCP: https: // linuxhint.com / tcp_packet_capture_analysis /
Abychom pochopili UDP: https: // linuxhint.com / udp_wireshark_analysis /
Odesílejte a přijímejte pakety UDP prostřednictvím rozhraní Linux CLI:
https: // linuxhint.com / send_receive_udp_packets_linux_cli /
Python Socket File Transfer Odeslat:
https: // linuxhint.com / python_socket_file_transfer_send /

Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...
Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...
Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...