„Python“

Siųskite ir gaukite UDP paketus per „Python“

Siųskite ir gaukite UDP paketus per „Python“
Mes jau žinome apie du pagrindinius transporto sluoksnio protokolus, tokius kaip TCP ir UDP. Norėdami gauti daugiau informacijos apie TCP ir UDP, galite patikrinti nuorodų skyrių.  Šiame straipsnyje mes sužinosime, kaip siųsti ir gauti UDP paketus naudojant „Python“ programą.

Lūkesčiai:

Štai keletas pagrindinių dalykų, kuriuos galima sužinoti iš šio straipsnio

  1. Siunčiant tekstą naudojant „Python“ programą, naudojančią UDP protokolą.
  2. Gaunamas tekstas naudojant „Python“ programą, naudojančią UDP protokolą.
  3. Patikrinkite „UDP“ paketą „Wireshark“.
  4. Sužinokite apie „Python“ kodą, kad galėtumėte siųsti ir gauti UDP paketus.

Bendroji sąrankos schema:

A ir B sistemos turėtų galėti pinguoti viena kitą.

Prielaidos ar apribojimai:

  1. Abi sistemos turėtų turėti „Linux“ su „Ubuntu“. Kodas gali veikti arba neveikti kitoje operacinėje sistemoje, tokioje kaip Windows10, MAC ir kt.
  2. Abi sistemos turėtų turėti 3 pitono versiją. Šis kodas gali veikti arba neveikti „Python 2“.7 versija.

Pastaba: Prieš patikrindami, ar „Python“ failai atlieka tą pačią užduotį, galite patikrinti, ar bandote siųsti ir gauti UDP paketus per „Linux“ CLI.

„Python“ failai:

Yra du python failai serverio.py ir klientas.py. serverio failas ir kliento failas turėtų būti atitinkamai serverio sistemoje ir kliento sistemoje.

Serveris.py

importo lizdas
importuoti sistemas
jei len (sys.argv) == 3:
# Gaukite „Serverio IP adresą“ ir „prievado numerį“ iš
1 argumentas ir 2 argumentas
ip = sys.argv [1]
uostas = int (sys.argv [2])
Kitas:
spausdinti ("Vykdyti kaip: python3 serveris.py ")
išėjimas (1)
# Sukurkite UDP lizdą
s = lizdas.lizdas (lizdas.AF_INET, lizdas.SOCK_DGRAM)
# Prijunkite lizdą prie prievado
serverio adresas = (ip, prievadas)
s.surišti (serverio adresas)
spausdinti ("Norėdami išeiti iš programos, atlikite Ctrl + c !!")
o tiesa:
spausdinti ("####### serveris klausosi #######")
duomenys, adresas = s.recvfrom (4096)
spausdinti ("\ n \ n 2. Serveris gavo: ", duomenys.iššifruoti ('utf-8'), "\ n \ n")
send_data = input ("Įveskite tekstą, kurį norite siųsti =>")
s.sendto (send_data.koduoti ('utf-8', adresas)
spausdinti ("\ n \ n 1. Serveris atsiuntė: ", send_data," \ n \ n ")

Klientas.py

importo lizdas
importuoti sistemas
jei len (sys.argv) == 3:
# Gaukite „Serverio IP adresą“ ir „prievado numerį“ iš 1 ir 2 argumentų
ip = sys.argv [1]
uostas = int (sys.argv [2])
Kitas:
spausdinti ("Vykdyti kaip: python3 klientas.py ")
išėjimas (1)
# Sukurkite serverio lizdą
s = lizdas.lizdas (lizdas.AF_INET, lizdas.SOCK_DGRAM, 0)
spausdinti ("Norėdami išeiti iš programos, atlikite Ctrl + c !!")
# Siųskime duomenis per UDP protokolą
o tiesa:
send_data = input ("Įveskite tekstą, kurį norite siųsti =>");
s.sendto (send_data.koduoti ('utf-8'), (ip, prievadas))
spausdinti ("\ n \ n 1. Išsiųstas klientas: ", send_data," \ n \ n ")
duomenys, adresas = s.recvfrom (4096)
spausdinti ("\ n \ n 2. Klientas gavo: ", duomenys.iššifruoti ('utf-8'), "\ n \ n")
# uždarykite lizdą
s.Uždaryti()

Siųsti / gauti UDP paketą:

Paimkime pavyzdį, pavyzdžiui, mes išsiųsime UDP paketą iš A sistemos į B sistemą. Taigi, kalbant apie serverio ir kliento koncepciją, mes turime paleisti serverį iš B sistemos pusės ir klientą iš A sistemos pusės.

Taip pat turime galiojančius IP adresus.

A sistemos IP: 192.168.1.6
B sistemos IP: 192.168.1.102

Dabar, skirtingai nei siųsti ir gauti UDP paketus per „Linux“ CLI, mes vykdysime serverio.py sistemoje, B [192.168.1.102] ir tada bėgsime klientas.py A sistemoje [192.168.1.6].

Kaip paleisti serverį.py 192 m.168.1.102?

Čia yra komanda paleisti serverį.py

$ python3 serveris.py 192.168.1.102 4444

Čia yra ekrano kopija

Čia yra du pitono programos argumentai. 1šv argumentas yra paties serverio IP adresas, čia jo 192.168.1.102 ir 2nd argumentas yra prievadas, kurio serverio bus klausomasi, čia mes pasirinkome 4444.

Kaip paleisti klientą.py 192 m.168.1.6?

Čia yra komanda paleisti klientą.py

$ python3 klientas.py 192.168.1.102 4444

Čia yra ekrano kopija

Čia yra du pitono programos argumentai. 1šv argumentas yra serverio IP adresas, čia jo 192.168.1.102 ir 2nd argumentas yra prievadas, kuriame veikia serveris. Mūsų pavyzdys yra 4444.

Siųskite arba gaukite tekstą:

Dabar, kaip matote, esame pasirengę bendrauti tarp dviejų sistemų. Bet pirmiausia turime pradėti nuo kliento. Įrašykime ką nors iš kliento ir pažiūrėkime, ar jis pasiekia serverį, ar ne.

Siųsti duomenis iš kliento: „Aš esu iš kliento“

Ekrano kopijos formos klientas:

Dabar šis kliento pranešimas turėtų ateiti į serverį. Čia yra serverio ekrano kopija.

Dabar mes galime pamatyti serverio pusėje taip pat turime galimybę ką nors nusiųsti klientui. Pabandykime tai.

Siųsti duomenis iš kliento: „Aš esu iš serverio“

Serverio ekrano kopija:

Ir čia yra ekrano kopija kliento pusėje.

Dabar tai tęsis begalę kartų, kol sustabdysime python programą naudodami Ctrl + c.

Patikrinkite „UDP“ paketą „Wireshark“:

Dabar mes šiek tiek bendravome, bet kaip mes sužinojome, kad UDP buvo naudojama tiems paketams siųsti ar priimti. Taigi, mes galime patikrinti užfiksavimą „Wireshark“.

Pažiūrėkime paketą, kai klientas [192.168.1.6] išsiuntė duomenis [„Aš esu iš kliento“] į serverį [192.168.1.6].

Kodo paaiškinimas:

Pagrindinį „python“ kodo paaiškinimą ieškokite „Python Socket File Transfer Send“ nuorodų skyriuje.

Mes paaiškinsime tik svarbius kliento ir serverio python failo eilučių kodus. Kliento ir serverio kode yra naudingų komentarų.

Kliento kodo paaiškinimas:

jei len (sys.argv) == 3:

Ankstesnė eilutė reikalinga norint patikrinti, ar vartotojas perėjo būtinus privalomus argumentus. Arba programa bus išjungta. Tas pats patikrinimas yra ir serverio programoje.

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

Pirmiau nurodyta eilutė skirta sukurti „Socket“ serverį su UDP [SOCK_DGRAM] protokolas. Serveryje yra tas pats kodas.py.

o tiesa:

Vykdyti programą begalinėje grandinėje, kol vartotojas atliks „Ctrl + c“. Serveryje yra tas pats kodas.py.

s.sendto (send_data.koduoti ('utf-8'), (ip, prievadas))

Norėdami išsiųsti minėtų duomenų duomenis ip ir uostas numeris.

duomenys, adresas = s.recvfrom (4096)

Norėdami gauti bet kokius duomenis iš serverio. Serveryje yra tas pats kodas.py.

Serverio kodo paaiškinimas:

s.sendto (send_data.koduoti ('utf-8', adresas)

Siųskite duomenis kliento adresu.

Išvada:

Mes galime siųsti arba gauti UDP duomenis naudodamiesi python programa. Viduje jis naudoja serverio kliento mechanizmą.

Nuorodos:

Norėdami suprasti TCP: https: // linuxhint.com / tcp_packet_capture_analysis /
Norėdami suprasti UDP: https: // linuxhint.com / udp_wireshark_analysis /
Siųsti ir gauti UDP paketus per „Linux“ CLI:
https: // linuxhint.com / send_receive_udp_packets_linux_cli /
„Python Socket“ failų siuntimas:
https: // linuxhint.com / python_socket_file_transfer_send /

Pridėkite pelės gestus prie „Windows 10“ naudodami šiuos nemokamus įrankius
Pastaraisiais metais kompiuteriai ir operacinės sistemos labai išsivystė. Buvo laikas, kai vartotojai turėjo naudoti komandas naršydami per failų tvar...
Valdykite ir valdykite pelės judėjimą tarp kelių „Windows 10“ monitorių
„Dual Display Mouse Manager“ leidžia jums valdyti ir konfigūruoti pelės judėjimą tarp kelių monitorių, sulėtinant jo judėjimą šalia sienos. „Windows 1...
„WinMouse“ leidžia tinkinti ir pagerinti pelės žymeklio judėjimą „Windows“ kompiuteryje
Jei norite pagerinti numatytąsias pelės žymiklio funkcijas, naudokite nemokamą programinę įrangą „WinMouse“. Tai prideda daugiau funkcijų, kurios padė...