我在以前正在运行的代码上安装了新的网络适配器(虽然它被禁用)后,我开始收到错误:
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协议可以使我的代码正常工作:
但是,由于我不能要求客户禁用他们可能需要的协议,因此该解决方案不是一种选择。
PS:启用IPv6协议(与图片中不同),使用IPv6版本的sServidor的PING(我得到的GetHostEntry的IPv6地址)到达目的地。此外,IPv6地址对应于与作为参数发送的IPv4相同的适配器(根据IPCONFIG)
我感谢任何帮助。
问候!