2010-03-13 54 views
3

我需要一個域名,如果我有一個IP地址(例如I型209.85.129.103和程序應該找出是谷歌地址)獲取域名基礎上的IP地址

據正如我已經想出的是得到主機名:

IPHostEntry IpToDomainName = Dns.GetHostEntry("209.85.129.103"); 
string HostName = IpToDomainName.HostName; //it returns "fk-in-f103.1e100.net" 

但它不是我想要的。 我不知道該如何實現。任何想法將有所幫助

+0

Google擁有'1e100.net',所以這是一個Google地址。 – 2010-03-13 19:51:29

回答

1

我想你說的是從主機名得到頂級域名?該TLD是完整的主機名的只是最後兩個點分部分,所以功能是這樣的:

public static string GetTopLevelDomain(string hostName) 
{ 
    int lastDot = hostName.LastIndexOf('.'); 
    if (lastDot < 0) 
     return hostName; 
    int previousDot = hostName.LastIndexOf('.', lastDot - 1); 
    return (previousDot >= 0) ? hostName.Substring(previousDot + 1) : hostName; 
} 

如果你確實想弄清楚擁有域誰,你有使用whois查找。這是whois example in C#。信息只是以純文本的形式返回;請記住,它不一定會告訴你擁有它的真實的個人或公司,有時這些信息是私人的,你會得到的是註冊商(如GoDaddy)。

另外,不同的whois服務器會給出不同的信息和不同的區域;例如,您可以使用ARIN獲取有關美國域的信息,但對於歐洲域,則需要使用RIPE。老實說,我希望這不是你想要做的,因爲你會發現它是一個相當焦油坑;沒有簡單的方法可靠地確定域X公司Y所有。

+0

好的,但用戶應該知道這是谷歌 – Tony 2010-03-13 19:59:30

+0

我正在開發一個小的HTTP監視器,所以我需要知道,如果用戶鍵入「209.85.129.103」他會知道它是google.com – Tony 2010-03-13 20:10:03

+0

@Tony:你只能在'209.85.129.103'的主機名實際上是'google.com'或其子域之一時才能這樣做。正如我所解釋的那樣,您可以嘗試使用whois查找來獲取更多信息,但是我不得不說,您正在沉沒的船上 - 找到正確的whois服務器並解析其輸出的過程非常複雜且極其錯誤 - 因爲沒有標準來管理其產出,因此很容易。我想你可能會妥協並嘗試解析來自arin.net的whois文本,如果失敗,只顯示原始主機名或IP。 – Aaronaught 2010-03-13 20:29:24