UDP multicast เป็นกลไกสำหรับการสื่อสารแบบหนึ่งต่อกลุ่มในเครือข่าย แตกต่างจากการออกอากาศ มัลติคาสต์อาจได้รับเฉพาะผู้ที่สมัครรับที่อยู่มัลติคาสต์ที่สนใจเท่านั้น แอปพลิเคชั่นนี้ใช้มัลติคาสต์ห้องสนทนาพื้นฐานผ่านเครือข่ายท้องถิ่น
คำเตือน
ข้อความทั้งหมดในห้องสนทนาจะถูกส่งผ่านช่องทางมัลติคาสต์ 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