يوفر البث المتعدد UDP آلية للاتصال من طرف إلى طرف في الشبكة. على عكس البث، لا يجوز استقبال البث المتعدد إلا من قبل المشتركين في عنوان البث المتعدد المحدد المعني. ينفذ هذا التطبيق غرفة دردشة أساسية متعددة البث عبر شبكة محلية.
حذر
يتم إرسال كافة الرسائل الموجودة في غرفة الدردشة عبر قنوات UDP متعددة البث غير مشفرة .
بالنسبة لواجهة المستخدم، يستخدم هذا المشروع إطار عمل egui. في النهاية الخلفية، يعمل وقت تشغيل Tokio على تشغيل جميع أحمال العمل غير المتزامنة: الشبكات والمزامنة وجدولة المهام.
يدير الخيط الرئيسي منطق واجهة المستخدم. في سلسلة رسائل منفصلة للشبكة، يعالج وقت تشغيل Tokio الرسائل الواردة والصادرة. يتم تمرير المعلومات بين الخيطين عبر القنوات.
عند بدء التشغيل، تقوم الواجهة الخلفية للشبكة بتهيئة مأخذ توصيل يرتبط بـ 0.0.0.0:3000
. ثم ينضم المقبس إلى عنوان البث المتعدد 224.0.0.69:3000
. لمنع مثيلات متعددة من التطبيق من الارتباط بنفس العنوان (على نفس الجهاز)، يتم تعطيل علامة SO_REUSEADDR
. يمكن تعديل كل هذه القيم عبر واجهة سطر الأوامر.
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
لتشغيل الخادم
# 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