2015-07-21 62 views
-1

我有這樣的代碼:的foreach在DNS主機地址

IPHostEntry host = null; 
Socket sock; 
host = Dns.GetHostEntry("ip.."); 

foreach (IPAddress address in host.AddressList) 
{ 
    IPEndPoint ipe = new IPEndPoint(address, 7777); 
    sock = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
    sock.Connect(ipe); 
    if (sock.Connected) 
    { 
     sock.SendTo(Encoding.UTF8.GetBytes("Hello world"), ipe); 
    } 
} 

此代碼確定本地主機上,但是當我寫VPS IP,代碼不工作,有什麼問題嗎?

+0

什麼不起作用?該foreach,連接,還是別的?你是否收到任何錯誤信息或異常? – GTHvidsten

+0

foreach不起作用,不,我沒有得到任何消息:( –

+0

什麼是確切的'Dns.GetHostEntry()'線,當它不工作? – GTHvidsten

回答

1

看起來您的DNS設置不正確,Dns.GetHostEntry(string)在下面的第二個點失敗。如果DNS服務器無法進行反向查找,它將不會返回主機名,因此Dns.GetHostEntry(string)不知道要查找什麼並將返回空白地址列表。

從MSDN:https://msdn.microsoft.com/en-us/library/ms143998.aspx

  1. 的方法試圖解析地址。如果hostNameOrAddress參數包含合法的IP字符串文字,則第一階段成功。
  2. 嘗試使用IP字符串文本的IP地址進行反向查找以獲取主機名。此結果被設置爲HostName屬性。
  3. 來自此反向查找的主機名將再次用於獲取與該名稱關聯的所有可能的IP地址,並將其設置爲AddressList屬性。