在C#中:
如果我ping了一个url(例如“http://myurl.com”)并且该url不存在,我会收到一个SocketException(没有这样的主机知道)。此请求是确定地址是否存在的非常快速的方法。有没有类似的方法来检查IP是否“存在”?
显然有可能ping IP,但如果主机位于中国(我位于瑞典)那么ping时间会很长......
答案 0 :(得分:5)
IT并不完全清楚你的意思。您可以使用Dns.GetHostEntry(string)
执行DNS解析,这会将名称(例如“myurl.com”)解析为主机条目(可能是多个地址) - 但这不会告诉您是否有任何实际使用这些IP地址的内容
你想要完成什么?通常,如果您想知道特定主机是否存在,那是因为您希望使用特定协议(例如HTTP)与之通信。在这种情况下,最好使用该协议发出请求 - 否则即使主机存在,也没有什么可说的对你有用。
答案 1 :(得分:1)
不,没有万无一失的方法可以检查是否使用了IP,因为未在任何地方注册使用。
主机名检查速度快的原因是您不需要实际与主机通信以确定主机名是否存在,它是否已在DNS系统中注册。
您正在做的主机名检查绝不保证主机实际存在,只是存在从主机名到IP号的别名,主机可能已关闭并且您赢了'从那次查询中得知。
此外,即使您使用ping来尝试确定是否使用了IP,您也不确定,因为可能存在防火墙阻止ping并且仍然允许其他IP流量通过(例如HTTP)。为了最好地了解主机是否可以满足您的请求,您最好使用您感兴趣的实际协议进行轮询。
答案 2 :(得分:0)
尝试使用telnet。 http://dotnettelnet.sourceforge.net/
连接后,您确定已联系到您的IP,然后立即发出关闭会话。否则,ip无法访问。