禁用/启用网络连接后未接收到多播套接字

时间:2018-09-20 10:07:02

标签: c# winforms sockets multicast

我正在使用具有以下配置的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。

1 个答案:

答案 0 :(得分:0)

禁用网络连接后,如果您拥有一个连接(虚拟主机等),Windows将自动使用另一个连接。启用先前的连接后,由于未选择接口,因此应用程序未使用正确的连接。禁用其他连接或指定接口即可解决该问题。