Как получить IP-адрес WebSite, который не отвечает на Pings? - PullRequest
4 голосов
/ 29 декабря 2010

Я пытаюсь получить IP-адрес веб-сайта, который не отвечает на пинги - они истекают.

Я пытаюсь сделать это из приложения C #, а не из окна ввода команд в Windows.Я использовал команду ping, у которой время ожидания на некоторых сайтах, так что это бесполезно.

Есть ли другой способ получить эту информацию, которая не требует ответа от сайта?

Ответы [ 9 ]

6 голосов
/ 29 декабря 2010

Даже если сайт не отвечает на PING (ICMP не включен на сервере или не фильтруется брандмауэром), команда PING все равно должна преобразовать имя сайта в IP-адрес и отобразить этот IP-адрес для вас.

Проверьте вывод команды ping в Windows (IP-адрес выделен жирным шрифтом):

ping wikipedia.org

Pinging wikipedia.org [208.80.152.2] с 32 байтами o
Ответ от 208.80.152.2: байты = 32 время = 245 мс TTL = 50
Ответ от 208.80.152.2: байты = 32 время = 235 мс TTL = 50

Обновление (из-заобновленный вопрос)

Если вы пытаетесь получить IP-адрес для DNS-имени из приложения C #, вам следует использовать метод GetHostEntry из класса Dns: http://msdn.microsoft.com/en-us/library/ms143998.aspx.

3 голосов
/ 29 декабря 2010

Вы получаете IP от DNS, и вам необходимо выполнить пинг, так что у вас уже есть.

$ ping google.com
PING google.com (74.125.227.51) 56(84) bytes of data.
64 bytes from 74.125.227.51: icmp_seq=0 ttl=56 time=5.80 ms
64 bytes from 74.125.227.51: icmp_seq=1 ttl=56 time=6.23 ms

Показан IP.Если вы не получаете IP, возможно, ваш DNS не работает.

Вы также можете попробовать nslookup google.com

2 голосов
/ 30 декабря 2010

Чтобы получить IP-адрес от имени хоста в Dns.GetHostEntry () .Передайте имя хоста, и он вернет вам IP-адрес.

Нет причин, по которым вам нужно пропинговать (при любом контакте) сайт, чтобы получить его IP-адрес.Поиск DNS даст вам то, что вам нужно.

1 голос
/ 30 декабря 2010

Следующий код можно использовать для выполнения поиска DNS для указанного имени хоста.

Использование DNS пропустит доступ к целевому серверу.Это независимая служба распределенных каталогов, которая поддерживает поиск имени хоста для IP-адреса.

Следующий код даст первый возвращенный IP-адрес для хоста, если для указанного имени хоста может быть разрешена запись DNS.

    public void test()
    {
        string hostname = "google.com";
        IPAddress ipAdress;

        if (TryGetIpAddress(hostname, out ipAdress))
        {
            Console.WriteLine("Host:'{0}', IP:{1}.", hostname, ipAdress);
        }
        else
        {
            Console.WriteLine("Host '{0}' not found.", hostname);
        }
    }

    public bool TryGetIpAddress(string hostname, out IPAddress ipAddress)
    {
        const int HostNotFound = 11001;
        ipAddress = null;

        try
        {
            IPHostEntry hostEntry = Dns.GetHostEntry(hostname);

            ipAddress = hostEntry.AddressList[0];
        }
        catch (SocketException ex)
        {
            if (ex.ErrorCode != HostNotFound) throw;
        }

        return (ipAddress != null);
    } 
1 голос
/ 29 декабря 2010

Вы можете использовать nslookup для разрешения доменных имен.

nslookup google.com

0 голосов
/ 20 января 2017

не проверено

Вы можете разместить этот сайт

http://centralops.net/co/DomainDossier.aspx

Вы можете использовать import.io для создания функциональности сайта.

https://www.import.io/

эта ссылка может дать вам представление

0 голосов
/ 30 декабря 2010

Делая это в коде, вы должны иметь функцию вроде gethostbyname ().

Это должно быть на stackoverflow.com

0 голосов
/ 29 декабря 2010

Если сайт (http) запущен и работает, то очень хорошо видно, что администратор sys / network отключил ping и, скорее всего, также утилиту трассировки маршрута.Это становится очень распространенным сейчас.Смотрите здесь .Ваша альтернатива - использовать ns lookup или сервис WHOIS, как описано здесь

0 голосов
/ 29 декабря 2010

Вы можете использовать tracert, и он разрешит IP-адрес и сообщит вам, если он может быть достигнут или где он останавливается.

...