使用Python获取TCP套接字统计信息?

使用Python获取TCP套接字统计信息?,python,sockets,Python,Sockets,有没有一种方法可以使用Python的socket模块来复制Linux实用程序的一些功能 ss用于转储套接字统计信息。它允许显示类似于netstat的信息。它可以显示比其他工具更多的TCP和状态信息 几乎所有的socket都围绕着创建新的socket展开,但是我找不到任何关于从系统的socket中获取统计信息的信息。我不知道如何使用socket模块来实现这样的功能。socket模块用于直接处理socket:打开/关闭、发送/接收等。它只是标准BSD socket接口上的一个薄包装 另一方面,获取系

有没有一种方法可以使用Python的
socket
模块来复制Linux实用程序的一些功能

ss
用于转储套接字统计信息。它允许显示类似于
netstat
的信息。它可以显示比其他工具更多的TCP和状态信息


几乎所有的
socket
都围绕着创建新的socket展开,但是我找不到任何关于从系统的socket中获取统计信息的信息。

我不知道如何使用
socket
模块来实现这样的功能。
socket
模块用于直接处理socket:打开/关闭、发送/接收等。它只是标准BSD socket接口上的一个薄包装

另一方面,获取系统上已分配的现有套接字的元数据需要了解系统上运行的其他进程。这与实际操作套接字关系不大,而与监视其他进程和/或其文件描述符关系更大

例如,似乎
ss
netstat
实际上都是通过读取和解析
/proc
伪文件系统来实现的(至少在Linux上是这样)。(例如,请参阅和。)内核管理进程及其打开的套接字,并通过
procfs
向其他进程公开(部分)有关它们的信息。这提供了一种简单而安全的方法,可以将有关进程的一些信息导出到用户空间,从而避免了大量系统调用或直接读取内核数据结构的需要

请注意,它几乎必须以这种方式工作。强大的进程隔离要求有关另一进程打开的文件(包括套接字)的信息必须以某种方式通过内核传递。这可以通过Linux上的
procfs
,或者一些内核提供的API(例如macOS上的
libproc
)实现。其他任何东西都将是一个巨大的安全漏洞


作为
socket
模块的替代方案,您可以尝试使用
psutil
软件包或类似的软件。该功能似乎合适。

为什么?它在应用中有什么用途?非常感谢您对psutil的详细解释和建议!看起来它能完美地完成这个任务。