Udpclient轮询UDP多播地址

时间:2012-12-11 11:47:09

标签: c# sockets udp multicast udpclient

我想检查UDP多播地址上的数据是否可用,我找到的唯一机制是Poll方法。

设定:

client = new UdpClient(localEp);
client.JoinMulticastGroup(multicastAddr, localIpAddress);
client.Connect(multicastAddr, receiveport);

轮询:

if (!client.Client.Poll(100, SelectMode.SelectRead))

客户端已连接(我已检查)但永远不会返回true 在wireshark中,我可以看到udp数据报被正确发送。

修复建议?

编辑:

IPEndpoint localEp = local ipv4单播地址,用于组播udps的端口 receiveport =用于接收多播的端口 multicastaddr = IPAddress

1 个答案:

答案 0 :(得分:0)

连接UDP套接字是指在接收时将数据报源地址和端口限制为指定对,并在发送时设置默认目标地址和端口。

删除对Connect()的通话。

编辑0:

您需要绑定到多播地址,而不是本地IP。从构造函数中删除localEp,或者将其替换为多播组/端口对。请参阅examples上的MSDN

你错了,你可以Receive()只有一个数据报。