在 UdpSocket 中加入多个组播源时如何区分传入数据包组

问题描述 投票:0回答:1

我需要监听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地址。

rust udp multicast multicastsocket
1个回答
0
投票

@Jmb 在评论中的回答解决了这个问题。

不要绑定到 0.0.0.0,而是绑定到 233.113.216.70:21001 和 233.113.216.75:21001.

© www.soinside.com 2019 - 2024. All rights reserved.