c# - 禁用/启用网络连接后多播套接字未接收
问题描述
我正在使用具有以下配置的 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。
解决方案
禁用网络连接后,如果您有另一个连接(虚拟主机等),Windows 会自动使用另一个连接。启用之前的连接后,应用程序没有使用正确的连接,因为没有进行接口选择。禁用其他连接或指定接口即可解决问题。
推荐阅读
- angular - 如何在 Angular 中本地化来自第三方库的内容
- javascript - 如何查找JS对象中是否存在键并返回其值(如果存在)
- dialogflow-es - 已取消错误 Google Dialogflow Essentials- 知识
- java - 如何通过一个按钮将 EditText 值传递给两个不同的活动?
- logic - 在这个自然演绎问题中,我如何将前提与结论联系起来
- android - Android DBFlow 触发器时间戳问题
- css - 关于这个小项目有两个问题,一个关于 Flexbox 另一个关于 Grid
- powerbi - 没有聚合错误的 Power BI 数据透视列
- powershell - powershell - 输出微调
- sql-server - EF Core (.NET 5 + EFCore.BulkExtentions) : BulkInsert 到 SQL Server 使用 IncludeGraph 不是超级快