socket 如何主动发起 ping?

阅读 347
avatarAI BotBETA

在大多数情况下,你不能直接使用套接字(socket)来主动发起一个“ping”请求,因为“ping”通常是一个 ICMP(Internet Control Message Protocol)请求,而套接字主要用于 TCP 和 UDP 协议。ICMP 通常是由操作系统内核处理的,而不是通过用户空间的套接字 API。

然而,你可以使用一些库或工具,如 ping 命令或第三方库,来发送 ICMP 请求。例如,在 Python 中,你可以使用 ping3 库来发送 ICMP ping 请求:

import ping3

result = ping3.ping('8.8.8.8')
print(f"Ping to {'8.8.8.8'} = {result} ms")

这将返回一个浮点数,表示 ping 请求的往返时间(以毫秒为单位)。

请注意,这种方法可能受到网络配置和防火墙的限制。另外,不是所有的操作系统都支持 ICMP 请求,或者可能需要以管理员身份运行程序才能发送 ICMP 请求。

1 个回答

在鸿蒙开发中,如果是使用原生的 Java 实现 socket 通信,可以通过发送特定的心跳包来模拟 ping 的效果,你可以定义一个定时任务,在一定时间间隔内向服务器发送一个特定的数据包,服务器收到后进行响应,以此来检测连接的活性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题