Python psutil查找可用端口

Python psutil查找可用端口,python,port,python-3.4,psutil,Python,Port,Python 3.4,Psutil,我正试图找到所有可用的端口来连接计算机。我正在使用下面的代码 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='pytho

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

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
变量是什么?那是港口吗

第二个是当我打印(x)时,我得到一个输出,像
pconn(fd=-1,family=,type=1,laddr=('xxx.x.x.x',xxxxx),raddr=(),status='LISTEN')
我知道
laddr
代表本地地址,但是
laddr
的其他数字是什么xxx.x.x.x'看起来像一个IP地址,但在某些输出上它是空的,没有数字。另外,
laddr
的第二个变量有时是3位,有时是5位。这些数字代表什么

我的最后一个问题是,我在寻找开放港口的正确道路上吗?我正在尝试连接一台计算机,因此我首先尝试查找打开的端口。

a
pid
是一个“进程ID”,系统上运行的每个进程都有一个唯一的标识符,因此您可以调整其参数,或在运行时发送信号,如“终止”、“停止”、“继续”

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

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

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

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

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

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


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

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

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


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

因此,例如,我可以通过该端口号连接到计算机,例如:3128?我有IP地址,所以我只是检查是否有可用的连接端口。如果您在computerA上运行此操作,您将获得computerA上正在使用的端口,因此它可以告诉您可以从其他地方连接到computerA上的IP地址和端口组合。如果您正在从computerA建立传出连接,您不必担心其上的可用/已用端口,只要连接到什么,我就会在命令行上使用
telnet[IP ADDRESS][PORT]
使用此命令进行尝试。我还有一个脚本,我相信它可以实现telnet连接。它很短。请检查一下:所以我想我需要端口号,因为这些方法需要一个开放的端口。它们需要在目标上有一个端口,当然。例如,您可以
telnet www.google.com 80
访问www.google.com的http端口(80),开始手动获取网页。所有用于进行网络连接的系统调用都会在您自己的计算机上为该连接分配一个空闲端口号。因此,基本上,我可以使用
laddr[1]
端口进行连接,对吗?因此,基本上,我必须在计算机a上运行脚本,收集其端口,然后使用
telnet[IP地址][端口]
在我的计算机的命令行上,我可以与计算机A进行通信。我说的对吗?是的,如果您编写的脚本可以解释telnet。