2016-11-02 4 views
0

Dns.GetHostEntry(ServerTextBox.Text)을 수행하기 위해 ip를 전달하면 완전히 잘못된 IP가 반환됩니다. 이 IP를 사용하여 내 서버에 연결할 때 "서버가 적극적으로 거부 한 연결"이라는 메시지와 함께 실패합니다.DNS.GetHostEntry가 잘못된 정보를 제공합니다

이 방법은 IP를받습니다 : ###. ###. ##. 119하지만 serverAddress를 다시 ###. ###. ##. 56으로 제공합니다. AddressList에서 .56 인 하나의 ip 만 보입니다.

_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로 인해 다음 코드는 예외를 throw합니다. 연결을 만들기 위해 여기서 다시 ip로 하드 코드를 작성해야했습니다.

'hard coded ip 
_ServerAddress = System.Net.IPAddress.Parse("###.###.##.119") 
_Connection = New ConnectionInfo(_ServerAddress, CInt(PortTextBox.Text), AddressOf InvokeAppendOutput) 

무엇이 여기에 있습니까?

답변

0

잘못된 IP 주소 같은 것은 없습니다. 하나의 DNS 항목은 동일하거나 다른 인터페이스에서 동일한 호스트를 가리키는 많은 IP 주소를 가질 수 있습니다.

그러면 소켓은 "모든 주소"(0.0.0.0) 또는 특정 주소에서 수신 대기 할 수 있습니다. 특정 IP 주소에서 수신 중이며 다른 호스트에 연결하려고하면 동일한 호스트를 가리 키더라도 연결을 거부합니다.

특정 서브넷에서 특정 주소로 요청을 차단하는 방화벽이있을 수도 있습니다. 다른 서브넷에서 동시에 연결할 수있는 경우입니다.

DNS 쿼리에서 사용해야하는 주소를 알 수있는 방법이 없습니다. 연결하려는 서브넷과 동일한 서브넷에 주소가 있는지 확인할 수 있습니다. 이렇게하면 성공적으로 연결할 수있는 가능성이 높아 지지만 보장 할 수는 없습니다.

+0

흠. 청취 코드를 들여다 봅니다. –

관련 문제