我正在使用绑定到提供的端点的 UdpClient 来侦听传入的数据包。我的代码如下:
...
string myIpAddress = "192.168.1.100";
int myPort = 50000;
IPEndPoint selfEndPoint = new IPEndPoint(IPAddress.Parse(myIpAddress), myPort);
IPEndPoint anySourceEndPoint = new IPEndPoint(IPAddress.Any, 0);
UdpClient receivingClient = new UdpClient();
receivingClient.Client.Bind(selfEndPoint); // Can throw.
receivingClient.Receive(ref anySourceEndPoint);
...
如果 IP 地址为“192.168.1.100”的接口不存在,则会抛出 SocketException`(如预期的那样)。如果存在这样的接口,UdpClient 会成功绑定并等待传入的数据包。我的问题如下。
如何检测到我被阻止Receive
并且接口地址不再可用的情况?
例如,应用程序正在运行并正在等待传入的数据包。然后用户禁用系统上的网络接口。应用程序仍然假定它可以接收数据包,即使它不能。
我来的关闭是ReceiveTimeout
在客户端上设置 a 并在发生此超时时重新创建/绑定 UdpClient ;我希望有替代方案或任何其他建议。