Python

UDP-pakettide saatmine ja vastuvõtmine Pythoni kaudu

UDP-pakettide saatmine ja vastuvõtmine Pythoni kaudu
Me teame juba kahte peamist transpordikihi protokolli nagu TCP ja UDP. TCP ja UDP kohta lisateabe saamiseks vaadake viite jaotist.  Selles artiklis õpime, kuidas saata ja vastu võtta UDP pakette python programmi abil.

Ootused:

Siin on mõned põhipunktid, mida saab sellest artiklist õppida

  1. Osa teksti saatmine Python-programmi abil, mis kasutab UDP-protokolli.
  2. Osa teksti vastuvõtmine Python-programmi abil, mis kasutab UDP-protokolli.
  3. Kontrollige WDP-paketti UDP-paketti.
  4. Siit leiate teavet Pythoni koodi kohta UDP-pakettide saatmiseks ja vastuvõtmiseks.

Üldine seadistamise skeem:

Süsteem A ja B peaksid saama üksteist pingida.

Eeldused või piirangud:

  1. Mõlemal süsteemil peaks olema Ubuntu Linux. Kood võib töötada või mitte töötada muus opsüsteemis, näiteks Windows10, MAC jne.
  2. Mõlemal süsteemil peaks olema pythoni versioon 3. See kood võib Python 2-s töötada või mitte.7 versioon.

Märkus. Enne Pythoni failide sama ülesande täitmist saate kontrollida Linuxi CLI kaudu UDP-pakettide saatmise ja vastuvõtmise proovimise viiteid.

Pythoni failid:

Pythoni faile on kaks server.py ja klient.py. serverifail ja kliendifail peaksid olema vastavalt serverisüsteemis ja kliendisüsteemis.

Server.py

impordipesa
impordi süsteem
kui len (sys.argv) == 3:
# Hankige aadressilt "Serveri IP-aadress" ja ka "pordi number"
argument 1 ja argument 2
ip = sys.argv [1]
port = int (sys.argv [2])
muu:
print ("Käivita nagu: python3 server.py ")
väljapääs (1)
# Looge UDP-pesa
s = pistikupesa.pistikupesa (pistikupesa.AF_INET, pistikupesa.SOCK_DGRAM)
# Ühendage pesa pordiga
serveri aadress = (ip, port)
s.köida (serveri aadress)
print ("Programmist väljumiseks tehke Ctrl + c !!")
tõsi:
print ("####### Server kuulab #######")
andmed, aadress = s.tagasi (4096)
print ("\ n \ n 2. Server sai: ", andmed.dekodeerida ('utf-8'), "\ n \ n")
send_data = input ("Sisestage saatmiseks mõni tekst =>")
s.sendto (send_andmed.kodeerida ('utf-8', aadress)
print ("\ n \ n 1. Server saatis: ", send_data," \ n \ n ")

Klient.py

impordipesa
impordi süsteem
kui len (sys.argv) = = 3:
# Hangi "Serveri IP-aadress" ja ka "pordi number" argumentidest 1 ja 2
ip = sys.argv [1]
port = int (sys.argv [2])
muu:
print ("Käivita nagu: python3 klient.py ")
väljapääs (1)
# Loo serveri jaoks pistikupesa
s = pistikupesa.pistikupesa (pistikupesa.AF_INET, pistikupesa.SOCK_DGRAM, 0)
print ("Programmist väljumiseks tehke Ctrl + c !!")
# Saadame andmed UDP-protokolli kaudu
tõsi:
send_data = input ("Sisestage saatmiseks mõni tekst =>");
s.sendto (send_andmed.kodeerida ('utf-8'), (ip, port))
print ("\ n \ n 1. Klient saadetud: ", send_data," \ n \ n ")
andmed, aadress = s.tagasi (4096)
print ("\ n \ n 2. Klient sai: ", andmed.dekodeerida ('utf-8'), "\ n \ n")
# sulgege pesa
s.Sulge()

UDP-paketi saatmine / vastuvõtmine:

Võtame näite, nagu saadaksime UDP paketi süsteemist A süsteemis B. Niisiis, server-klient kontseptsioonis peame käitama serverit süsteemi B poolel ja klient süsteemi A poolel.

Samuti on meil kehtivad IP-aadressid.

A-süsteemi IP: 192.168.1.6
Süsteem B IP: 192.168.1.102

Nüüd, erinevalt UDP-pakettide saatmisest ja vastuvõtmisest Linuxi CLI kaudu, käivitame server.py süsteemis, B [192.168.1.102] ja siis me jookseme klient.py süsteemis A [192.168.1.6].

Serveri käitamine.py aastal 192.168.1.102?

Siin on käsk serveri käivitamiseks.py

$ python3 server.py 192.168.1.102 4444

Siin on ekraanipilt

Siin on pythoni programmi jaoks kaks argumenti. 1st argument on serveri enda IP-aadress, siin selle 192.168.1.102 ja 2nd argument on port, mida server kuulab, siin valisime 4444.

Kuidas klienti käivitada.py aastal 192.168.1.6?

Siin on käsk kliendi käivitamiseks.py

$ python3 klient.py 192.168.1.102 4444

Siin on ekraanipilt

Siin on pythoni programmi jaoks kaks argumenti. 1st argument on serveri IP-aadress, siin selle 192.168.1.102 ja 2nd argument on port, kus server töötab. Meie näiteks on see 4444.

Teksti saatmine või vastuvõtmine:

Nagu näete, oleme nüüd valmis suhtlema kahe süsteemi vahel. Kuid kõigepealt peame alustama kliendist. Kirjutame midagi klienti ja vaatame, kas see jõuab serverisse või mitte.

Andmete saatmine kliendilt: "Olen kliendist"

Ekraanipildivormi klient:

Nüüd peaks see kliendisõnum serverisse jõudma. Siin on serveri ekraanipilt.

Nüüd näeme serveri poolel ka võimalust midagi kliendile saata. Proovime seda.

Andmete saatmine kliendilt: "Ma olen serverist"

Serveri ekraanipilt:

Ja siin on ekraanipilt kliendi poolel.

Nüüd kestab see lõpmatuid kordi, kuni peatame pythoni programmi Ctrl + c abil.

Kontrollige WDP-paketti UDP-paketti:

Nüüd oleme suhelnud, kuid kuidas me saame teada, et UDP-d kasutati nende pakettide saatmiseks või vastuvõtmiseks. Nii saame Wiresharkis jäädvustamist kontrollida.

Vaatame paketti, kui klient [192.168.1.6] saatis andmed [“Olen kliendist”] serverisse [192.168.1.6].

Koodi selgitus:

Põhipüütoni koodide selgituste leidmiseks lugege viidete jaotist „Python Socket File Transfer Send”.

Selgitame ainult kliendi ja serveri pythoni faili olulisi ridade koode. Kliendi ja serveri koodi sees on kasulikke kommentaare.

Kliendikoodi selgitus:

kui len (sys.argv) == 3:

Ülaltoodud rida on vajalik, et kontrollida, kas kasutaja on edastanud kohustuslikud argumendid. Või muidu programm väljub. Sama kontroll on olemas ka serveriprogrammis.

s = pistikupesa.pistikupesa (pistikupesa.AF_INET, pistikupesa.SOCK_DGRAM, 0)

Ülaltoodud rida on UDP-ga pistikupesaserveri loomine [SOCK_DGRAM] protokoll. Sama kood on seal serveris.py.

tõsi:

Programmi käivitamine lõpmatus tsüklis, kuni kasutaja teeb Ctrl + c. Sama kood on seal serveris.py.

s.sendto (send_andmed.kodeerida ('utf-8'), (ip, port))

Nimetatud andmete saatmiseks ip ja sadam number.

andmed, aadress = s.tagasi (4096)

Serverist pärinevate andmete saamiseks. Sama kood on seal serveris.py.

Serverikoodi selgitus:

s.sendto (send_andmed.kodeerida ('utf-8', aadress)

Andmete saatmine kliendi aadressile.

Järeldus:

Saame saata või vastu võtta UDP-andmeid pythoni programmi abil. Sisemiselt kasutab see serveri kliendi mehhanismi.

Viited:

TCP mõistmiseks: https: // linuxhint.com / tcp_packet_capture_analysis /
UDP mõistmiseks: https: // linuxhint.com / udp_wireshark_analysis /
UDP-pakettide saatmine ja vastuvõtmine Linuxi CLI kaudu:
https: // linuxhint.com / send_receive_udp_packets_linux_cli /
Pythoni sokli failiedastus Saada:
https: // linuxhint.com / python_socket_file_transfer_send /

Nende tasuta tööriistade abil lisage Windows 10-le hiire liigutused
Viimastel aastatel on arvutid ja operatsioonisüsteemid palju arenenud. Oli aeg, mil kasutajad pidid failihaldurites navigeerimiseks kasutama käske. Na...
Juhtige ja hallake hiire liikumist mitme kuvari vahel Windows 10-s
Dual Display Mouse Manager võimaldab teil kontrollida ja konfigureerida hiire liikumist mitme monitori vahel, aeglustades selle liikumist piiri läheda...
WinMouse võimaldab teil kohandada ja parandada hiirekursori liikumist Windowsi arvutis
Kui soovite oma hiirekursori vaikefunktsioone paremaks muuta, kasutage vabavara WinMouse. See lisab rohkem funktsioone, mis aitavad teil alandlikust h...