Python psutil查找可用端口

2024-09-27 09:27:46 发布

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

我试图找到所有可用的端口来连接计算机。我用下面的代码

import psutil
for proc in psutil.process_iter():
    print (proc)
    for x in proc.connections():
        if x.status == psutil.CONN_LISTEN:
            print (x)

print(proc)打印所有进程,如psutil.Process(pid=5808, name='pythonw.exe')等等。我的第一个问题是:pid变量是什么?那是港口吗?在

第二个是当我print (x)得到一个类似pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=('xxx.x.x.x', xxxxx), raddr=(), status='LISTEN')的输出时,我明白laddr代表本地地址,但是{}的其他数字是什么xxx.x.x.x'看起来像一个IP地址,但在某些输出上它是空的,没有数字。另外,laddr的第二个变量有时是3位数,有时是5位数。这些数字代表什么?在

最后一个问题是,我找到开放港口的方法对吗?我正在尝试连接一台计算机,所以我要先在我身上找到打开的端口。在


Tags: 端口inforstatus计算机代表数字proc
2条回答

很难“连接”到一个“开放”的端口。当一个端口被打开时,该端口上的任何程序都在监听该端口。在

如果你想找到空闲的端口,你的脚本正在反向工作!您应该查找未使用的端口。你不可能让两个程序在同一个端口上工作。所有端口1-65535均可打开。在

如果你想通过网络进行通信,你必须编写一个程序,该程序位于计算机a上,在端口上进行监听。然后,你让计算机B在所述端口上打开与计算机a的连接。此时,从B写入的任何数据都将被发送到运行在A上的程序

pid是一个“进程ID”,在您的系统上运行的每个进程都有一个唯一的标识符,因此您可以调整它的参数,或者在它运行时向它发送诸如“terminate”、“stop”、“continue”之类的信号。在

laddr=('xxx.x.x.x', xxxxx)是IP地址和端口号的元组。在

在我的系统上运行时,我得到了以下示例:

laddr=('127.0.0.1', 3128)-仅侦听IPv4本地主机/环回,端口3128

laddr=('::1', 3128)-侦听端口3128上的IPv6本地主机/环回

laddr=('0.0.0.0', 80)-监听任何IPv4地址,端口80(http)

laddr=('::', 80)-监听任何IPv6地址,端口80(http)

如果您这样做是为了连接到另一台计算机,则不需要这样做—源端口通常是在您创建传出套接字时分配给您的,因此您不必担心它。在

相关问题 更多 >

    热门问题