我需要监听2个UDP多播地址。一个是
233.113.216.75:21001
,另一个是233.113.216.70:21001
。由于它们的端口相同,我无法单独绑定到它们。
use std::net::UdpSocket;
let socket = UdpSocket::bind("0.0.0.0:21001").unwrap();
udp_socket.join_multicast_v4(&Ipv4Addr::new(233, 113, 216, 70), &Ipv4Addr::UNSPECIFIED)?;
udp_socket.join_multicast_v4(&Ipv4Addr::new(233, 113, 216, 75), &Ipv4Addr::UNSPECIFIED)?;
我可以使用
udp_socket.recv_from(&mut self.buffer)
收听两个提要,没有任何问题。但是,我无法知道传入数据包的多播组。 recv_from
返回客户端的 IP 地址,而不是多播组。我需要知道传入的数据包属于哪个组。
有没有办法获取传入数据报的多播组?
感谢您提前的帮助。
我尝试使用来自recv_from的addr,但它显示了源IP地址。
@Jmb 在评论中的回答解决了这个问题。
不要绑定到 0.0.0.0,而是绑定到 233.113.216.70:21001 和 233.113.216.75:21001.