2012-01-10 2 views
3

В C#:Быстрый способ проверить наличие хоста

Если я свистеть URL (., Например, «http://myurl.com») и что URL не существует Я получаю SocketException (Нет такого хозяина знает). Этот запрос является очень быстрым способом определения наличия адреса. Есть ли аналогичный способ проверить, существует ли IP-адрес?

Очевидно, есть возможность пинговать IP, но если хозяин находится в Китае (и я находится в Швеции), то время пинг получает очень долго ...

+0

Что вы подразумеваете под «exist» здесь? – AakashM

+6

также некоторые хосты настроены так, что не отвечают на ping –

+0

Если вы не можете выполнить ping-хост, это не должно быть правдой, что хост недоступен. – fyr

ответ

1

Нет, нет надежный способ проверить, используется ли IP, поскольку использование нигде не зарегистрировано.

Причина, по которой проверка имени хоста выполняется быстро, заключается в том, что вам не нужно фактически разговаривать с хостом, чтобы выяснить, существует ли имя хоста, оно зарегистрировано в системе DNS.

Имя хоста, которое вы делаете, ни в коем случае не гарантирует, что хост существует, так как существует только псевдоним от имени хоста к IP-номеру, хост вполне может опуститься, и вы не узнаете из этого Погляди.

Кроме того, даже если вы используете ping, чтобы попытаться выяснить, используется ли IP-адрес, вы не уверены, так как может быть брандмауэр, блокирующий пинг и до сих пор пропускающий другой IP-трафик (например, HTTP). Чтобы лучше узнать, доступен ли хост для ваших запросов, вам лучше всего опросить его, используя фактический протокол, который вас интересует.

5

Это не совсем понятно, что вы имеете в виду. Вы можете выполнить разрешение DNS с Dns.GetHostEntry(string), которое разрешит имя (например, myurl.com) на запись хоста (потенциально много адресов), но это не скажет вам, действительно ли что-то использует эти IP-адреса.

Что вы пытаетесь достичь? Обычно, если вы хотите узнать, существует ли конкретный хост, это потому, что вы хотите поговорить с ним с помощью определенного протокола (например, HTTP). В этом случае лучше сделать запрос с этим протоколом - в противном случае, даже если хост существует, нечего сказать, что он вам полезен.

0

Попробуйте telnet. http://dotnettelnet.sourceforge.net/

После подключения вы уверены, что достигли своего IP-адреса, а затем немедленно выполните закрытие сеанса. В противном случае ip недоступен.

Смежные вопросы