如何在Python中实现非根进程和非子进程ping?

2024-10-02 20:37:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在我的Python应用程序中实现ping,以获得特定主机的RTT。有几种方法可以做到这一点:

  1. 使用其中一个PyPI包(例如,pyping、ping、multiping、scapy等)。但是所有这些包都创建了一个原始套接字来处理ICMP数据包。我不能接受。

  2. 自己创建原始套接字。由于上述原因,这是不可接受的。我还尝试创建如下ICMP套接字: socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_ICMP) 我的机器坏了。

  3. 通过子进程启动ping实用程序。但它的工作速度相对较慢,而且看起来很难看。

  4. TCP Ping。这在我的项目中是不可接受的。

你能给我一个不同的方法来实现没有根权限的ping,并且在不同的进程中使用ping实用程序吗?可能存在一些不同的方法如何将RTT发送到某个主机?你知道吗

Python2.7,Ubuntu16


Tags: 方法rtt实用程序pypi应用程序进程原因socket