我有一台带有多个 NIC 的计算机 - 而 UDPClient 的发送方法不断失败。这是代码:
private static void receiveData()
{
recvSock = new UdpClient(PORT);
//recvSock.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, mainInterface);
recvSock.JoinMulticastGroup(IPAddress.Parse(IP), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
byte[] data = recvSock.Receive(ref iep);
// Do not include messages from us
if (myIPs.Contains(iep.Address))
continue;
string stringData = Encoding.ASCII.GetString(data, 0, data.Length);
Console.WriteLine("received: " + stringData);
}
}
PORT = 5000 和 IP = 224.5.6.7 这样应该没问题。主要问题是我无法通过 recvSock.Receive() 行。我看到数据包通过 wireshark 传入 - 但代码不会处理它们...
想法?提前致谢!
丹
编辑:我可以确认是多 NIC 导致了问题 --- 代码在单个 NIC 上运行良好。取消注释 SetSocketOption 行应该允许它与多个 NIC 一起工作,但它仍然失败......想法?
最佳答案
我在这篇文章中遇到了同样的问题,然后在以下位置找到了解决方案: UDP: Read data from all network interfaces
Bind() 到 0.0.0.0 基本上不起作用,您必须在每个本地 IP 地址上使用 Bind() 和 JoinMulticastGroup()。必须爱微软这个。
关于c# - UDPClient 多播在具有多个 NIC 的计算机上接收失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182303/