1 c++
c++/vc++/mfc 中是否有任何方法可以验证远程计算机是否在网络上。我不想使用 ping 命令。我尝试使用 WSAConnect 方法,但如果远程计算机不在网络上,则需要花费大量时间进行搜索。在这种情况下,windoe 应用程序会冻结很长时间。我需要替代方法来验证远程计算机网络连接。请帮忙
您可以检查主机名是否存在以及 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!
Run Code Online (Sandbox Code Playgroud)
如果您进行原始套接字编程,您可以尝试通过连接到主机,然后调用 select() 并设置较短的超时。
| 归档时间: |
|
| 查看次数: |
4525 次 |
| 最近记录: |