2013-05-11 118 views
0

我想解析IP地址,但沒有得到期望的結果。解析IP地址以獲取別名

我想中檢索真正的網絡名字是這樣的:http://www.google.com

但我得到的是:mad01s14-in-f6.1e100.net

Public Function IP_To_HostName(ByVal IP As String) As String 
    Return system.net.Dns.GetHostEntry(IP).HostName.ToString 
End Function 

    MsgBox(IP_To_HostName("173.194.41.6")) ' One of the Google addresses 

我不很瞭解網絡協議和這個,我失敗了?

PS:注意我不想使用過時的方法!

UPDATE: 

試過這個得到「www.google.com」的字符串,但似乎該IP地址沒有任何名稱...(別名的長度爲0,我不明白爲什麼)

For Each a In System.Net.Dns.GetHostEntry("173.194.41.6").Aliases 
     MsgBox(a) ' Is empty 
Next 
+0

沒有簡單的方法。考慮兩個站點託管在同一臺計算機上的情況。 – I4V 2013-05-11 08:34:50

+0

www.google.com只是一組機器的別名,其中一個具有IP 173.194.44.16,您可以獲得地址的真實指針,而不是別名。 – Mithrandir 2013-05-11 08:39:06

+0

謝謝你們,那麼我需要的是別名,對不對?那麼如何獲得別名? – ElektroStudios 2013-05-11 09:37:09

回答

1

我用Google的DNS服務器8.8.8.8測試了這段代碼,它返回「google-public-dns-a.google.com」,這是正確的。

Public Function UseIPGetHost(ByRef IPAddr As String) As String 
    Dim hostname As System.Net.IPHostEntry 

    hostname = System.Net.Dns.GetHostEntry(IPAddr) 
    Return hostname.HostName 
End Function 

也許你應該用你的代碼,但要多行和使用變量,使其更易於讀取,你可以看到的過程。 希望這可以幫助你!

1

你的問題沒有簡單的解決方案。如果您要求DNS服務器輸入主機名稱,則會爲您提供存儲的名稱。通常一個IP地址只有一條記錄(Reverse DNS lookup)。另一方面,指向一個IP地址的前向記錄的數量不受限制,並且在Web服務器的情況下,可以有數百個在1個IP上運行的網絡(別名)。這些別名的轉發記錄可以(並且通常)在許多DNS服務器上播放。

要解決您的問題,您需要搜索Internet上的所有DNS服務器,以查找哪些別名指向了所需的IP並最終選擇所需的IP。

編輯

您可以嘗試BP網絡在工具如http://network-tools.com/確實發現可以找到關於IP地址的內容。如果您發現某些參數對您可用,則可以稍後從代碼中發現它們。