C# 检查主机是否存在的快速方法

C# 检查主机是否存在的快速方法,c#,C#,在C#中: 如果我ping一个url(例如http://myurl.com)并且该url不存在,我得到一个SocketException(不知道这样的主机)。此请求是确定地址是否存在的一种非常快速的方法。是否有类似的方法来检查IP是否“存在” 显然有可能对IP进行ping,但是如果主机位于中国(我位于瑞典),那么ping时间会很长……不,没有简单的方法来检查是否使用了IP,因为在任何地方都没有注册使用 主机名检查速度快的原因是,您不需要实际与主机交谈来确定主机名是否存在,它已在DNS系统中注册

在C#中:

如果我ping一个url(例如http://myurl.com)并且该url不存在,我得到一个SocketException(不知道这样的主机)。此请求是确定地址是否存在的一种非常快速的方法。是否有类似的方法来检查IP是否“存在”


显然有可能对IP进行ping,但是如果主机位于中国(我位于瑞典),那么ping时间会很长……

不,没有简单的方法来检查是否使用了IP,因为在任何地方都没有注册使用

主机名检查速度快的原因是,您不需要实际与主机交谈来确定主机名是否存在,它已在DNS系统中注册

您正在进行的主机名检查并不能保证主机确实存在,只是主机名到IP号码之间存在一个别名,主机很可能已关闭,您无法从该查找中知道


此外,即使您使用ping来尝试确定是否使用了IP,您也不确定,因为可能存在防火墙阻止ping,并且仍然允许其他IP流量通过(例如HTTP)。为了更好地了解主机是否可以为您的请求提供服务,您最好使用您感兴趣的实际协议对其进行轮询。

您的意思并不完全清楚。您可以执行DNS解析,将名称(如“myurl.com”)解析为主机条目(可能有许多地址),但这不会告诉您是否有任何东西实际使用了这些IP地址

你想完成什么?通常,如果您想知道某个特定的主机是否存在,那是因为您想使用特定的协议(例如HTTP)与它交谈。在这种情况下,最好使用该协议发出请求,否则即使主机存在,也没有什么可以说它对您有用。

试试telnet


一旦连接,您确定已到达IP,然后立即发出关闭会话。否则,ip将无法访问。

您这里的“存在”是什么意思?还有一些主机配置为不响应ping如果您无法ping主机,则主机不可访问一定不是真的。捕获未知的HostException是通过java.net的最佳方式。抱歉,我以为您希望使用java方式来执行此操作。刚才我知道你在找C代码。我不知道C。阅读本文-有时需要5-6秒来检查主机是否存在。从那以后我就不再查了。