Multicast UDP menyediakan mekanisme komunikasi satu-ke-banyak dalam suatu jaringan. Tidak seperti penyiaran, multicast hanya dapat diterima oleh mereka yang berlangganan alamat multicast tertentu yang diinginkan. Aplikasi ini mengimplementasikan multicast ruang obrolan dasar melalui jaringan area lokal.
Peringatan
Semua pesan di ruang obrolan dikirim melalui saluran multicast UDP yang tidak terenkripsi .
Untuk antarmuka pengguna, proyek ini menggunakan kerangka egui. Di back-end, runtime Tokio mendukung semua beban kerja asinkron: jaringan, sinkronisasi, dan penjadwalan tugas.
Thread utama menjalankan logika antarmuka pengguna. Pada thread jaringan terpisah, runtime Tokio menangani pesan masuk dan keluar. Informasi diteruskan antara dua thread melalui saluran.
Saat startup, back-end jaringan menginisialisasi soket yang mengikat 0.0.0.0:3000
. Soket kemudian bergabung dengan alamat multicast 224.0.0.69:3000
. Untuk mencegah beberapa contoh aplikasi mengikat ke alamat yang sama (pada perangkat yang sama), tanda SO_REUSEADDR
dinonaktifkan. Semua nilai ini dapat diubah melalui antarmuka baris perintah.
Usage: udp-multicast-chat [-a <addr>] [-p <port>] [--reuse]
Networking options.
Options:
-a, --addr multicast address that the socket must join
-p, --port specific port to bind the socket to
--reuse whether or not to allow the UDP socket to be reused by
another application
--help display usage information
Untuk menjalankan server
# Bind to `0.0.0.0:3000`, then join the multicast address
# `224.0.0.69:3000`, and launch the user interface.
cargo run --release -- --addr 224.0.0.69 --port 3000