Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在IPv6上创建UdpClient_C#_Ipv6_Udpclient - Fatal编程技术网

C# 无法在IPv6上创建UdpClient

C# 无法在IPv6上创建UdpClient,c#,ipv6,udpclient,C#,Ipv6,Udpclient,我原本以为是一项简单的任务,现在却变成了一场噩梦 归根结底,现在,我需要在端口8888上创建一个UDP侦听器,位于特定的本地IPv6地址链路上 执行以下行时,我会引发异常: _udpSoc = new UdpClient(MONITOR_INPUT_EVENT_SOCKET, AddressFamily.InterNetworkV6); (其中监视器输入事件套接字是值8888的常量) 在试图寻求支持后,我甚至发现描述完全相同的行 抛出的SocketException为“请求的地址在其上下文中无

我原本以为是一项简单的任务,现在却变成了一场噩梦

归根结底,现在,我需要在端口8888上创建一个UDP侦听器,位于特定的本地IPv6地址链路上

执行以下行时,我会引发异常:

_udpSoc = new UdpClient(MONITOR_INPUT_EVENT_SOCKET, AddressFamily.InterNetworkV6);
(其中监视器输入事件套接字是值8888的常量)

在试图寻求支持后,我甚至发现描述完全相同的行

抛出的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是一个IPEndPoint,设置为IPAddress.Any,ScopeId设置为正确的接口,并且是监视器\u输入\u事件\u套接字的端口)

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


出了什么问题?

仅添加一点,如果我删除ScopeId(设置为0,默认值),将创建UdpClient,但不接收数据(可以在wireshark上看到)
Socket。OSSupportsIPv6是否为true?(该值也反映了一些.net配置)10049确实表明您的计算机上没有IPv6。如您所述使用
UdpClient(IPEndPoint)
听起来像是在使用ipv4。我肯定支持IPv6-我有一个通过IPv6(本地链接)到同一应用程序中目标的活动telnet会话。我仍然会检查它,因为OSSupportsIPv6还反映了当前.net system.net配置中是否启用了IPv6