在c++/vc++/mfc中有没有什么方法可以验证远程机器是否在网络上?我不想使用ping命令。我尝试使用WSAConnect方法,但如果远程机器不在网络上,它会花费大量时间进行搜索。在这种情况下,应用程序windoe会冻结很长时间。我需要另一种方法来验证远程机器网络连接。请帮助
发布于 2009-06-24 08:02:29
您可以检查主机名是否存在,以及DNS是否可以为其解析IP地址,但这不会告诉您它是否在线。为了确定它是否在线,您必须与主机交换数据。要实现此目的,主机必须正在侦听端口,并且必须发送某种响应。
通常,主机的最小公分母是ICMP数据包-也称为ping。您可以在C++中编写自己的服务来发送这些UDP数据包,并检测应答。
某些主机和某些路由器禁用ICMP,使其看起来“不可见”。如果您知道您的主机接受TCP端口上的连接,则可以尝试创建tcp套接字。例如,在shell中,可以使用nc进行测试。
nc -z google.com 80
Connection to google.com 80 port [tcp/http] succeeded!如果进行原始套接字编程,可以尝试通过连接到主机,然后调用select(),超时时间很短。
发布于 2009-06-24 08:32:22
如果你不想让你的应用阻塞,那就使用线程。
发布于 2009-06-24 07:25:02
您可以使用tracert命令示例:
tracert -w 1000 192.168.0.77
https://stackoverflow.com/questions/1036845
复制相似问题