.NET Socket Connect IPv6错误

时间:2014-07-25 01:19:32

标签: .net vb.net sockets ipv6

我在以前正在运行的代码上安装了新的网络适配器(虽然它被禁用)后,我开始收到错误:

     Dim MyipAddress As IPAddress
     Dim MyipAddresss() As IPAddress
     Dim remoteEP As IPEndPoint

     MyipAddresss = Dns.GetHostEntry(sServidor).AddressList

     For Each MyipAddress In MyipAddresss
        remoteEP = New IPEndPoint(MyipAddress, iPuerto)

        Sock = New Socket(MyipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp)

        Sock.ReceiveTimeout = 0
        Sock.SendTimeout = 0
        Sock.ReceiveBufferSize = 8388607
        Try
            Sock.Connect(remoteEP)
            bConectado = True
            Exit For
        Catch ex As Exception
                Debug.Print(ex.Message)
        End Try

     Next

输入参数,sServidor =" 192.168.1.10"和iPuerto = 54321。这段代码一直有效,直到添加了一个新的网络设备(我认为;它是我在系统上记住的唯一变化)。错误在Sock.Connect行上升,它是西班牙语,但它是这样的:

SocketErrorCode = 10060

"由于连接部分在一段时间后没有响应,或者在已建立的连接上产生错误,因此连接问题产生了错误...等等#34;

我注意到" MyipAddresss",在DNS.GetHostEntry上,它是一个带有IPv6格式的1项列表;所以我试过更改New Socket()的参数;我尝试过InnerNetwork和InnerNetworkV6而不是AddressFamily,但没有成功。

我还发现从适配器属性中禁用TCP / IPv6协议可以使我的代码正常工作:

This mode connects OK

但是,由于我不能要求客户禁用他们可能需要的协议,因此该解决方案不是一种选择。

PS:启用IPv6协议(与图片中不同),使用IPv6版本的sServidor的PING(我得到的GetHostEntry的IPv6地址)到达目的地。此外,IPv6地址对应于与作为参数发送的IPv4相同的适配器(根据IPCONFIG)

我感谢任何帮助。

问候!

0 个答案:

没有答案