首页 > 解决方案 > 禁用/启用网络连接后多播套接字未接收

问题描述

我正在使用具有以下配置的 Socket 来接收多播数据包,并且代码工作正常。

socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(bindPoint);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(multicastAddress, IPAddress.Any));
socket.ReceiveTimeout = 1000;

但是从控制面板禁用网络连接并启用后,套接字无法接收多播数据。我可以用 Wireshark 查看数据包。我尝试关闭套接字,重置他的套接字,但重新启动是我想出的唯一解决方案。该应用程序将在用户通常移除以太网电缆并插入另一根电缆的环境中使用。

最初我使用的是 UdpClient,但同样的问题仍然存在。操作系统是 Windows 7,我使用 .NET 4.5.2。

标签: c#winformssocketsmulticast

解决方案


禁用网络连接后,如果您有另一个连接(虚拟主机等),Windows 会自动使用另一个连接。启用之前的连接后,应用程序没有使用正确的连接,因为没有进行接口选择。禁用其他连接或指定接口即可解决问题。


推荐阅读