Python

Hantar dan terima paket UDP melalui Python

Hantar dan terima paket UDP melalui Python
Kami sudah mengetahui mengenai dua protokol lapisan pengangkutan utama seperti TCP dan UDP. Untuk maklumat lebih lanjut mengenai TCP dan UDP, anda boleh menyemak bahagian rujukan.  Dalam artikel ini kita akan belajar bagaimana mengirim dan menerima paket UDP menggunakan program python.

Jangkaan:

Berikut adalah beberapa perkara penting yang dapat dipelajari dari artikel ini

  1. Menghantar beberapa teks menggunakan program python yang menggunakan protokol UDP.
  2. Menerima beberapa teks menggunakan program python yang menggunakan protokol UDP.
  3. Periksa paket UDP di Wireshark.
  4. Ketahui mengenai kod python untuk menghantar dan menerima paket UDP.

Diagram Penyediaan Umum:

Sistem A dan B semestinya saling berpasangan.

Andaian atau Batasan:

  1. Kedua-dua sistem harus mempunyai Linux dengan Ubuntu. Kod tersebut mungkin atau tidak berfungsi pada sistem operasi lain seperti Windows10, MAC dll.
  2. Kedua-dua sistem harus mempunyai versi python 3. Kod ini mungkin atau tidak berfungsi pada ular sawa 2.7 versi.

Catatan: Anda boleh menyemak rujukan untuk mencuba Menghantar dan Menerima paket UDP melalui Linux CLI sebelum pergi ke fail python untuk melakukan tugas yang sama.

Fail Python:

Terdapat dua fail python pelayan.py dan pelanggan.py. fail pelayan dan fail klien masing-masing mesti ada di sistem Pelayan dan sistem Pelanggan.

Pelayan.py

soket import
import sys
sekiranya len (sys.argv) == 3:
# Dapatkan "alamat IP Pelayan" dan juga "nombor port" dari
hujah 1 dan hujah 2
ip = sys.argv [1]
port = int (sys.argv [2])
lain:
cetak ("Jalankan seperti: pelayan python3.py ")
jalan keluar (1)
# Buat soket UDP
s = soket.soket (soket.AF_INET, soket.SOCK_DGRAM)
# Ikutkan soket ke port
pelayan_address = (ip, port)
s.mengikat (alamat_pelayan)
cetak ("Lakukan Ctrl + c untuk keluar dari program !!")
Walaupun Betul:
cetak ("####### Pelayan sedang mendengar #######")
data, alamat = s.dari (4096)
cetak ("\ n \ n 2. Pelayan menerima: ", data.menyahkod ('utf-8'), "\ n \ n")
send_data = input ("Taipkan beberapa teks untuk dikirim =>")
s.sendto (send_data.mengekod ('utf-8'), alamat)
cetak ("\ n \ n 1. Pelayan dihantar: ", send_data," \ n \ n ")

Pelanggan.py

soket import
import sys
sekiranya len (sys.argv) == 3:
# Dapatkan "alamat IP Pelayan" dan juga "nombor port" dari argumen 1 dan argumen 2
ip = sys.argv [1]
port = int (sys.argv [2])
lain:
cetak ("Jalankan seperti: pelanggan python3.py ")
jalan keluar (1)
# Buat soket untuk pelayan
s = soket.soket (soket.AF_INET, soket.SOCK_DGRAM, 0)
cetak ("Lakukan Ctrl + c untuk keluar dari program !!")
# Mari hantar data melalui protokol UDP
Walaupun Betul:
send_data = input ("Taipkan beberapa teks untuk dihantar =>");
s.sendto (send_data.mengekod ('utf-8'), (ip, port))
cetak ("\ n \ n 1. Pelanggan dihantar: ", send_data," \ n \ n ")
data, alamat = s.dari (4096)
cetak ("\ n \ n 2. Pelanggan menerima: ", data.menyahkod ('utf-8'), "\ n \ n")
# tutup soket
s.tutup ()

Hantar / Terima paket UDP:

Mari kita ambil contoh seperti kita akan menghantar paket UDP dari Sistem A ke Sistem B. Jadi, dalam konsep pelayan-pelanggan, kita harus menjalankan pelayan di sisi Sistem B dan pelanggan di sisi Sistem A.

Kami juga mempunyai alamat IP yang sah.

Sistem A IP: 192.168.1.6
Sistem B IP: 192.168.1.102

Sekarang tidak seperti Hantar dan Terima paket UDP melalui Linux CLI kami akan jalankan pelayan.py dalam Sistem, B [192.168.1.102] dan kemudian kita akan berjalan pelanggan.py dalam Sistem A [192.168.1.6].

Cara menjalankan pelayan.py pada tahun 192.168.1.102?

Berikut adalah arahan untuk menjalankan pelayan.py

pelayan $ python3.halaman 192.168.1.102 4444

Inilah tangkapan skrin

Di sini terdapat dua hujah untuk program python. 1st argumen adalah alamat IP pelayan itu sendiri, berikut 192.168.1.102 dan 2nd argumen adalah port mana pelayan akan mendengar, di sini kita telah memilih 4444.

Cara menjalankan klien.py pada tahun 192.168.1.6?

Berikut adalah arahan untuk menjalankan klien.py

pelanggan $ python3.halaman 192.168.1.102 4444

Inilah tangkapan skrin

Di sini terdapat dua hujah untuk program python. 1st argumen adalah alamat IP pelayan, berikut 192.168.1.102 dan 2nd argumen adalah port tempat pelayan berjalan. Sebagai contoh kami, ia adalah 4444.

Hantar atau terima beberapa teks:

Sekarang seperti yang anda lihat, kami bersedia untuk berkomunikasi antara dua sistem. Tetapi kita perlu bermula dari pelanggan terlebih dahulu. Mari taipkan sesuatu pada pelanggan dan lihat apakah ia sampai ke pelayan atau tidak.

Hantar Data dari pelanggan: "Saya dari Pelanggan"

Pelanggan borang tangkapan skrin:

Sekarang mesej pelanggan ini harus sampai ke pelayan. Berikut adalah tangkapan skrin pelayan.

Sekarang kita dapat melihat di sisi pelayan juga kita mempunyai pilihan untuk mengirim sesuatu kepada pelanggan. Mari cuba.

Hantar Data dari pelanggan: "Saya dari Pelayan"

Tangkapan skrin pelayan:

Dan inilah tangkapan skrin di pihak pelanggan.

Sekarang ini akan berlangsung tanpa henti sehingga kita menghentikan program python menggunakan Ctrl + c.

Periksa paket UDP di Wireshark:

Sekarang kita telah melakukan beberapa komunikasi tetapi bagaimana kita mengetahui bahawa UDP digunakan untuk mengirim atau menerima paket tersebut. Jadi, kita dapat memeriksa tangkapan di Wireshark.

Mari lihat paket ketika pelanggan [192.168.1.6] menghantar data ["Saya dari Pelanggan"] ke pelayan [192.168.1.6].

Penjelasan kod:

Untuk penjelasan kod python asas, rujuk "Python Socket File Transfer Send" di bahagian rujukan.

Kami hanya akan menerangkan kod baris penting untuk fail Python Pelanggan dan Server. Terdapat komen berguna di dalam kod pelanggan dan pelayan.

Penjelasan kod pelanggan:

sekiranya len (sys.argv) == 3:

Garis di atas diperlukan untuk memeriksa sama ada pengguna telah lulus argumen wajib yang diperlukan. Atau program akan keluar. Pemeriksaan yang sama ada dalam program pelayan.

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

Garis di atas adalah untuk membuat pelayan soket dengan UDP [SOCK_DGRAM] protokol. Kod yang sama ada di pelayan.py.

Walaupun Betul:

Untuk menjalankan program dalam gelung tak terhingga sehingga pengguna melakukan Ctrl + c. Kod yang sama ada di pelayan.py.

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

Untuk menghantar data yang disebutkan ip dan pelabuhan nombor.

data, alamat = s.dari (4096)

Untuk menerima data yang datang dari pelayan. Kod yang sama ada di pelayan.py.

Penjelasan kod pelayan:

s.sendto (send_data.mengekod ('utf-8'), alamat)

Hantar data ke alamat pelanggan.

Kesimpulan:

Kami boleh menghantar atau menerima data UDP menggunakan program python. Secara dalaman ia menggunakan mekanisme pelanggan pelayan.

Rujukan:

Untuk memahami TCP: https: // linuxhint.com / tcp_packet_capture_analisis /
Untuk memahami UDP: https: // linuxhint.com / udp_wireshark_analisis /
Hantar dan Terima paket UDP melalui Linux CLI:
https: // linuxhint.com / send_receive_udp_packets_linux_cli /
Penghantaran Fail Python Socket Hantar:
https: // linuxhint.com / python_socket_file_transfer_send /

5 Permainan Arcade Terbaik untuk Linux
Pada masa kini, komputer adalah mesin serius yang digunakan untuk permainan. Sekiranya anda tidak dapat memperoleh skor tinggi baru, anda akan tahu ma...
Battle For Wesnoth 1.13.6 Pembangunan Dikeluarkan
Battle For Wesnoth 1.13.6 dilancarkan bulan lalu, adalah rilis pengembangan keenam di 1.13.siri x dan memberikan sejumlah penambahbaikan, terutamanya ...
Cara Memasang League Of Legends di Ubuntu 14.04
Sekiranya anda peminat League of Legends, maka ini adalah peluang bagi anda untuk menguji menjalankan League of Legends. Perhatikan bahawa LOL disokon...