Skip to main content

multi_group/
multi_group.rs

1use std::net::{IpAddr, Ipv4Addr, SocketAddr};
2
3use tokio_multicast::MulticastSocket;
4
5#[tokio::main(flavor = "current_thread")]
6async fn main() -> Result<(), Box<dyn std::error::Error>> {
7    // Joins multiple groups and prints the tracked membership count.
8    let socket = MulticastSocket::builder()
9        .bind(SocketAddr::from((Ipv4Addr::UNSPECIFIED, 5000)))
10        .join(IpAddr::V4(Ipv4Addr::new(239, 1, 1, 1)))
11        .join(IpAddr::V4(Ipv4Addr::new(239, 1, 1, 2)))
12        .build()
13        .await?;
14
15    println!("listening on {}", socket.local_addr()?);
16    let groups = socket.memberships();
17    println!("joined {} groups", groups.len());
18    Ok(())
19}