2012-01-10 111 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)来与它通话。在这种情况下,最好使用该协议发出请求 - 否则即使主机存在,也没有什么可以说对您有用的。