我试图找到所有可用的端口来连接计算机。我用下面的代码
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
代表本地地址,但是{laddr
的第二个变量有时是3位数,有时是5位数。这些数字代表什么?在
最后一个问题是,我找到开放港口的方法对吗?我正在尝试连接一台计算机,所以我要先在我身上找到打开的端口。在
很难“连接”到一个“开放”的端口。当一个端口被打开时,该端口上的任何程序都在监听该端口。在
如果你想找到空闲的端口,你的脚本正在反向工作!您应该查找未使用的端口。你不可能让两个程序在同一个端口上工作。所有端口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本地主机/环回,端口3128laddr=('::1', 3128)
-侦听端口3128上的IPv6本地主机/环回laddr=('0.0.0.0', 80)
-监听任何IPv4地址,端口80(http)laddr=('::', 80)
-监听任何IPv6地址,端口80(http)如果您这样做是为了连接到另一台计算机,则不需要这样做—源端口通常是在您创建传出套接字时分配给您的,因此您不必担心它。在
相关问题 更多 >
编程相关推荐