gpt4 book ai didi

c++ - 在不使用 ping 命令的情况下验证远程机器的连接性

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:12 26 4
gpt4 key购买 nike

在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!

如果您进行原始套接字编程,您可以尝试通过连接到主机,然后在短时间内调用 select()。

关于c++ - 在不使用 ping 命令的情况下验证远程机器的连接性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com