1

原本以为很简单的事情,却变成了一场噩梦。

归结为现在,我需要在特定链接本地 IPv6 地址上的端口 8888 上创建一个 UDP 侦听器。

执行以下行时抛出异常:

_udpSoc = new UdpClient(MONITOR_INPUT_EVENT_SOCKET, AddressFamily.InterNetworkV6);

(其中 MONITOR_INPUT_EVENT_SOCKET 是值 8888 的 const int)

在尝试寻求支持后,我什至找到了一篇描述完全相同的行的 MSDN 文章。

抛出的 SocketException 是“请求的地址在其上下文中无效”,错误代码为 10049,堆栈跟踪为:

at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.UdpClient..ctor(Int32 port, AddressFamily family)
at [my code...]

或者,如果我将问题行更改为:

_udpSoc = new UdpClient(_groupEp);

(其中 _groupEp 是设置为 IPAddress.Any 的 IPEndPoint,ScopeId 设置正确的接口和 MONITOR_INPUT_EVENT_SOCKET 的端口)

...并获得“请求的地址在其上下文中无效”的异常,具有与以前相同的错误代码和堆栈跟踪。

怎么了?

4

0 回答 0