c# - UDPClient 多播在具有多个 NIC 的计算机上接收失败

标签 c# multicast udpclient

我有一台带有多个 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/

相关文章:

java - 使用 Ehcache 多播获取 `Can' t 分配请求的地址`java.net.SocketException

.net - UdpClient连接后收不到

javascript - 如何将整套模型附加到formdata并在MVC中获取

c# - 在函数中使用 LINQ

c# - 在同一类上启用 EAP 和 async/await

c# - 我们可以用 C# 中的对象替换 if 语句吗

java - 组播数据开销?

typescript - angular2 类型 'Subject<{}>' 不可分配给类型 '() => Subject<number>'

java - Android - 将 TCP 客户端转换为 UDP 客户端

udp - 为什么我不能让 UPnP 单播 M-SEARCH 而不是 MultiCast M-SEARCH 工作?