当我通过ip去做Dns.GetHostEntry(ServerTextBox.Text)
时,它会给我一个完全错误的IP回复。当我使用这个ip连接到我的服务器时,它失败并显示一条消息"连接被服务器主动拒绝"。
此方法正在接收IP:###。###。##。119但是将serverAddress作为###。###。##。56。在AddressList中我只看到一个ip是.56。
_ServerAddress = Nothing
Dim remoteHost As IPHostEntry = Dns.GetHostEntry(ServerTextBox.Text)
If remoteHost IsNot Nothing AndAlso remoteHost.AddressList.Length > 0 Then
For Each deltaAddress As IPAddress In remoteHost.AddressList
If deltaAddress.AddressFamily = AddressFamily.InterNetwork Then
_ServerAddress = deltaAddress
Exit For
End If
Next
End If
由于错误的ip,以下代码会引发异常。我不得不再次在这里硬编码ip来建立连接。
'hard coded ip
_ServerAddress = System.Net.IPAddress.Parse("###.###.##.119")
_Connection = New ConnectionInfo(_ServerAddress, CInt(PortTextBox.Text), AddressOf InvokeAppendOutput)
我在这里缺少什么?
答案 0 :(得分:0)
没有错误的IP地址。一个DNS条目可以在同一个或不同的接口上具有指向同一主机的许多IP地址。
然后套接字可以监听"任何地址" (0.0.0.0)或特定地址。如果它正在侦听特定的IP地址,并且您尝试连接到另一个IP地址,即使它指向同一主机,它也会拒绝连接。
还可能有一个防火墙阻止从某个子网到某个地址的请求,同时从另一个子网可以连接就好了。
无法从DNS查询中了解您应该使用哪个地址。您可以尝试找出与您要连接的地址在同一子网上的地址。这可能会提高您成功连接的机会,但这并不能保证。