Python

Kirim dan terima paket UDP melalui Python

Kirim dan terima paket UDP melalui Python
Kita sudah mengetahui tentang dua protokol lapisan transport utama seperti TCP dan UDP. Untuk informasi lebih lanjut tentang TCP dan UDP Anda dapat memeriksa bagian referensi reference.  Pada artikel ini kita akan belajar cara mengirim dan menerima paket UDP menggunakan program python.

Harapan:

Berikut adalah beberapa poin penting yang dapat dipelajari dari artikel ini

  1. Mengirim 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. Pelajari tentang kode python untuk mengirim dan menerima paket UDP.

Diagram Pengaturan Umum:

Sistem A dan B harus bisa saling ping.

Asumsi atau Batasan:

  1. Kedua sistem harus memiliki Linux dengan Ubuntu. Kode mungkin atau mungkin tidak berfungsi pada sistem operasi lain seperti Windows10, MAC dll.
  2. Kedua sistem harus memiliki python versi 3. Kode ini mungkin atau mungkin tidak berfungsi pada python 2.versi 7.

Catatan: Anda dapat memeriksa referensi untuk mencoba Kirim dan Terima paket UDP melalui Linux CLI sebelum menggunakan file python untuk melakukan tugas yang sama.

File Python:

Ada dua file python server.py dan klien.py. file server dan file klien masing-masing harus ada di sistem Server dan sistem Klien.

Server.py

soket impor
sistem impor
jika len(sys.argv) == 3:
# Dapatkan "alamat IP Server" dan juga "nomor port" dari
argumen 1 dan argumen 2
ip = sys.argv[1]
port = int(sys.argv[2])
lain:
print("Jalankan seperti: server python3.py ")
keluar(1)
# Buat soket UDP
s = soket.soket (soket).AF_INET, soket.SOCK_DGRAM)
# Ikat soket ke port
server_address = (ip, port)
s.mengikat (server_address)
print("Lakukan Ctrl+c untuk keluar dari program !!")
sementara Benar:
print("####### Server mendengarkan #######")
data, alamat = s.recvfrom(4096)
print("\n\n2. Server menerima: ", data.dekode('utf-8'), "\n\n")
send_data = input("Ketik beberapa teks untuk dikirim => ")
s.kirim ke(kirim_data.encode('utf-8'), alamat)
print("\n\n1. Server terkirim : ", send_data,"\n\n")

Klien.py

soket impor
sistem impor
jika len(sys.argv) == 3:
# Dapatkan "alamat IP Server" dan juga "nomor port" dari argumen 1 dan argumen 2
ip = sys.argv[1]
port = int(sys.argv[2])
lain:
print("Jalankan seperti: klien python3.py ")
keluar(1)
# Buat soket untuk server
s = soket.soket (soket).AF_INET, soket.SOCK_DGRAM, 0)
print("Lakukan Ctrl+c untuk keluar dari program !!")
# Mari mengirim data melalui protokol UDP
sementara Benar:
send_data = input("Ketik beberapa teks untuk dikirim =>");
s.kirim ke(kirim_data.encode('utf-8'), (ip, port))
print("\n\n1. Klien Terkirim : ", send_data, "\n\n")
data, alamat = s.recvfrom(4096)
print("\n\n2. Klien menerima : ", data.dekode('utf-8'), "\n\n")
#tutup soketnya
s.Menutup()

Kirim/Terima paket UDP:

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

Kami juga memiliki alamat IP yang valid.

Sistem A IP: 192.168.1.6
Sistem B IP: 192.168.1.102

Sekarang tidak seperti Kirim dan Terima paket UDP melalui Linux CLI kami akan menjalankan server.py dalam Sistem, B [192.168.1.102] dan kemudian kita akan lari klien.py di Sistem A [192.168.1.6].

Cara menjalankan server.py pada tahun 192.168.1.102?

Berikut adalah perintah untuk menjalankan server.py

server $python3.py 192.168.1.102 4444

Ini screenshotnya

Di sini ada dua argumen untuk program python. 1st argumennya adalah alamat IP server itu sendiri, ini dia 192.168.1.102 dan 2dan argumen adalah port server mana yang akan mendengarkan, di sini kami telah memilih 4444.

Bagaimana menjalankan klien.py pada tahun 192.168.1.6?

Berikut adalah perintah untuk menjalankan klien.py

$python3 klien.py 192.168.1.102 4444

Ini screenshotnya

Di sini ada dua argumen untuk program python. 1st argumennya adalah alamat IP server, ini dia 192.168.1.102 dan 2dan argumen adalah port tempat server berjalan. Untuk contoh kita adalah 4444.

Kirim atau terima beberapa teks:

Sekarang seperti yang Anda lihat, kami siap untuk berkomunikasi antara dua sistem. Tapi kita harus mulai dari klien dulu. Mari kita ketik sesuatu di klien dan lihat apakah itu sampai ke server atau tidak.

Kirim Data dari klien: “Saya dari Klien”

Klien formulir tangkapan layar:

Sekarang pesan klien ini harus datang ke server. Ini screenshot servernya server.

Sekarang kita dapat melihat di sisi server juga kita memiliki opsi untuk mengirim sesuatu ke klien. Mari kita coba itu.

Kirim Data dari klien: “Saya dari Server”

Tangkapan layar server:

Dan ini adalah tangkapan layar di sisi klien.

Sekarang ini akan terus berlanjut hingga kita menghentikan program python menggunakan Ctrl+c.

Periksa paket UDP di Wireshark:

Sekarang kami telah melakukan beberapa komunikasi tetapi bagaimana kami mengetahui bahwa UDP digunakan untuk mengirim atau menerima paket-paket itu?. Jadi, kami dapat memeriksa tangkapan di Wireshark.

Mari kita lihat paketnya ketika klien [192.168.1.6] mengirim data [“Saya dari Klien”] ke server [192.168.1.6].

Penjelasan kode:

Untuk penjelasan kode python dasar lihat "Python Socket File Transfer Send" di bagian referensi.

Kami hanya akan menjelaskan kode baris penting untuk file python Klien dan Server. Ada komentar yang berguna di dalam kode klien dan server.

Penjelasan kode klien:

jika len(sys.argv) == 3:

Baris di atas diperlukan untuk memeriksa apakah pengguna telah melewati argumen wajib yang diperlukan. Atau program akan keluar. Pemeriksaan yang sama ada di program server.

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

Baris di atas adalah untuk membuat server soket dengan UDP [SOCK_DGRAM] protokol. Kode yang sama ada di server.py.

sementara Benar:

Untuk menjalankan program dalam infinite loop hingga pengguna melakukan Ctrl+c. Kode yang sama ada di server.py.

s.kirim ke(kirim_data.encode('utf-8'), (ip, port))

Untuk mengirim data untuk disebutkan aku p dan Pelabuhan jumlah.

data, alamat = s.recvfrom(4096)

Untuk menerima data apa pun yang datang dari server. Kode yang sama ada di server.py.

Penjelasan kode server:

s.kirim ke(kirim_data.encode('utf-8'), alamat)

Kirim data ke alamat klien.

Kesimpulan:

Kami dapat mengirim atau menerima data UDP menggunakan program python. Secara internal menggunakan mekanisme klien server.

Referensi:

Untuk memahami TCP: https://linuxhint.com/tcp_packet_capture_analysis/
Untuk memahami UDP: https://linuxhint.com/udp_wireshark_analysis/
Kirim dan Terima paket UDP melalui Linux CLI:
https://linuxhint.com/send_receive_udp_packets_linux_cli/
Transfer File Soket Python Kirim:
https://linuxhint.com/python_socket_file_transfer_send/

Cara Menginstal dan Memainkan Doom di Linux
Pengantar Doom Seri Doom berasal dari tahun 90-an setelah rilis Doom. Itu adalah hit instan dan sejak saat itu seri game telah menerima banyak penghar...
Vulkan untuk Pengguna Linux
Dengan setiap generasi baru kartu grafis, kami melihat pengembang game mendorong batas kesetiaan grafis dan selangkah lebih dekat ke fotorealisme. Tet...
OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...