2016-11-02 24 views
0

私がipを渡してDns.GetHostEntry(ServerTextBox.Text)をすると、間違ったIPバックを返します。このIPを使用してサーバーに接続すると、「サーバーによって積極的に接続が拒否されました」というメッセージが表示されます。DNS.GetHostEntryが間違った情報を与える

このメソッドは、IP:###。###。##。119を受け取りますが、serverAddressを###。###。##。56として返します。 AddressListでは、私は1つの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

間違ったIPアドレスはありません。 1つのDNSエントリには、同じホストまたは異なるインターフェイス上の同じホストを指す多数のIPアドレスを持つことができます。

ソケットは、「任意のアドレス」(0.0.0.0)または特定のアドレスでリッスンすることができます。特定のIPアドレスでリッスンしていて、別のIPアドレスに接続しようとすると、同じホストを指していても接続を拒否します。

特定のサブネットから特定のアドレスへの要求をブロックするファイアウォールが存在する可能性もあります。同時に、別のサブネットから同時に接続できます。

DNSクエリから使用するアドレスを知る方法はありません。接続しているサブネットと同じサブネット上にアドレスがあるかどうかを調べることができます。これにより、接続に成功する可能性が高まる可能性がありますが、これは保証ではありません。

+0

こんにちは。リスニングコードを調べます。 –

関連する問題