tokio udp multicast chat
1.0.0
В этом примере реализован очень простой клиент чата CLI, который обменивается данными через многоадресную рассылку UDP. Он реализован с помощью tokio crate, асинхронной среды выполнения для написания управляемых событиями неблокирующих приложений на Rust.
Код тривиален, но следует отметить одну интересную деталь. Чтобы разрешить связь между экземплярами на одном хосте, нам нужно включить SO_REUSEADDR
для сокета UDP. API tokio не предоставляет прямого способа сделать это, вместо этого мы используем крейт socket2 для создания собственного сокета, который мы обновляем до std::net::UdpSocket
, а затем до tokio::net::UdpSocket
.
cargo
и Rust.$ git clone https://github.com/henninglive/tokio-udp-multicast-chat/ && cd tokio-udp-multicast-chat
$ cargo build --release
(ПРИМЕЧАНИЕ. При компиляции без оптимизаций наблюдается большая разница в производительности, поэтому я рекомендую всегда использовать --release
для их включения)target/release/tokio-udp-multicast-chat
$ cargo run --release
для сборки и последующего запуска за один шаг.