служба DNS.GetHostEntry дает неправильную информацию

Когда я передаю 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)

Чего мне здесь не хватает?

1 ответ

  1. Нет такой вещи, как неправильный IP-адрес. Одна запись DNS может иметь много IP-адресов, которые указывают на тот же хост, на том же или на разных интерфейсах.

    Тогда сокет может прослушиваться по «любому адресу» (0.0.0.0) или по определенным адресам. Если он прослушивает определенный IP-адрес и вы пытаетесь подключиться к другому, даже если он указывает на тот же хост, он откажет в подключении.

    Также может быть брандмауэр, который блокирует запрос из определенной подсети на определенный адрес, когда в то же время из другой подсети вы можете подключиться просто отлично.

    Нет способа узнать из запроса DNS, какой адрес вы должны использовать. Вы можете попытаться узнать, есть ли адрес в той же подсети, из которой вы подключаетесь. Это может улучшить ваши шансы на успешное подключение, но это не гарантия.