2012-01-10 119 views
3

的存在,在C#:快速的方法來檢查主機

如果我ping一個網址(如「http://myurl.com」)和URL不存在我到一個SocketException(沒有這樣的主機是知道的)。該請求是確定地址是否存在的非常快速的方式。有沒有類似的方法來檢查IP是否存在?

顯然有ping的IP的可能性,但如果主機位於中國(我設在瑞典),那麼平的時間變得很長......

+0

這裏「存在」是什麼意思? – AakashM 2012-01-10 09:08:28

+6

還有一些主機配置爲不響應ping – 2012-01-10 09:08:30

+0

如果您無法ping主機,則主機不可訪問。 – fyr 2012-01-10 09:09:33

回答

1

沒有,沒有萬無一失的方式來檢查是否使用IP,因爲使用未在任何地方註冊。

主機名檢查速度快的原因是,您不需要實際與主機通話以確定主機名是否存在,它是否已在DNS系統中註冊。

您所做的主機名檢查絕不會保證主機確實存在,只是存在主機名到IP號的別名,主機可能已關閉,您將無法從中知道擡頭。

此外,即使您使用ping來確定是否使用IP,您也不確定,因爲可能存在防火牆阻止ping並仍然允許其他IP通信(例如HTTP)。要最好地瞭解一個主機是否可以滿足您的請求,您最好使用您感興趣的實際協議進行輪詢。

5

IT並不完全清楚您的意思。您可以使用Dns.GetHostEntry(string)執行DNS解析,這將解析一個名稱(例如「myurl.com」)到一個主機條目(可能包含許多地址) - 但不會告訴您是否有任何內容實際使用這些IP地址。

你想完成什麼?通常如果你想知道某個特定的主機是否存在,那是因爲你想用特定的協議(例如HTTP)來與它通話。在這種情況下,最好使用該協議發出請求 - 否則即使主機存在,也沒有什麼可以說對您有用的。