Получить доменное имя на основе IP-адреса - PullRequest
3 голосов
/ 13 марта 2010

Мне нужно получить доменное имя, если у меня есть IP-адрес (например, я набираю 209.85.129.103, и программа должна выяснить, что это адрес Google)

Насколько я понял, получить имя хоста:

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

но это не то, что я хочу. Я не знаю, как этого добиться. Любые идеи будут полезны

1 Ответ

1 голос
/ 13 марта 2010

Полагаю, вы говорите о получении верхнего уровня доменного имени из имени хоста? 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 в C # . Информация просто возвращается в виде простого текста; имейте в виду, что он не обязательно даже скажет вам реальное лицо или компанию, которой он принадлежит, иногда эта информация является частной, и все, что вы получите, - это регистратор (например, GoDaddy).

Кроме того, разные серверы Whois будут предоставлять разную информацию и разные области; например, вы можете получить информацию о домене в США с помощью ARIN, но для европейских доменов вместо этого вам нужно использовать RIPE. Честно говоря, я надеюсь, что это не то, что вы пытаетесь сделать, потому что вы обнаружите, что это довольно яма; нет простого способа надежно определить, что домен X принадлежит компания Y .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...