'ipAddr.ScopeId'引发了'System.Net.Sockets.SocketException'类型的异常

时间:2012-02-17 16:16:39

标签: c# .net sockets exception-handling udp

enter image description here enter image description here

string ipAddress = "a.b.c.d";
IPAddress ipAddr = IPAddress.Parse(ipAddress);
IPEndPoint endPoint = new IPEndPoint(ipAddr, port);
EndPoint remote = (EndPoint)endPoint;
socket.ReceiveFrom(data, ref remote);

当我尝试从UDP套接字读取数据时,我遇到了间歇性问题。我告诉它我要读取哪个IP地址和端口 - 很少,在这个下收到来自不同IP地址的数据包?

无声异常(当我将鼠标悬停在ipAddr上时)是:

  

'ipAddr.ScopeId'引发了类型'System.Net.Sockets.SocketException'的异常

如果我在调试时发现这个,我看对象的'endPoint'和'remote' - 端点是正确的ip地址,但是远程的ip地址已经改变了(在这个异常之后,这是自己的,这是这不是我的逻辑问题)它接收到的实际IP地址,而不是它请求的地址!

ReceiveFrom 99%的工作时间,这个例外是什么意思,为什么微软为什么?

问题是,一旦读取了这个数据包,它就会被读取,而不会被传递到它想去的地方,我该如何防止它?

编辑:scopeID适用于IPV6,但我不关心ipv6所以也许我正在寻找错误的地方,但这仍然无法解释为什么'端点'没有正确解析为'远程'(IPEndPoint转换为抽象) EndPoint) - 172.50.2.111不存在,99%的时间超时,但为什么要拿起其他数据包?! 哭声

0 个答案:

没有答案