Python查看电脑开启了哪些端口
在计算机网络中,端口(Port)是计算机上用于与外部设备或其他计算机通信的逻辑通道。在网络通信中,端口用于标识不同的应用程序或服务。每个端口都有一个唯一的数字编号,范围从0到65535。其中,0到1023的端口号被称为“系统端口”或“众所周知的端口”,用于一些特定的服务,比如HTTP(80端口)、FTP(21端口)等。而1024到65535的端口号则被称为“动态端口”或“私有端口”,用于一些自定义的应用程序或服务。
在实际应用中,我们经常需要查看当前计算机开启了哪些端口,以便进行网络配置、故障排查等操作。Python作为一门强大的脚本语言,提供了丰富的网络编程库和工具,可以方便地实现端口的查看和管理。
本文将介绍如何使用Python查看电脑开启了哪些端口,并提供相应的代码示例。
网络编程库
在Python中,有几个常用的网络编程库可以帮助我们实现端口的查看,其中包括socket
、psutil
和netstat
等。
socket库
Python的标准库socket
提供了一套通用的网络编程接口,可以用于创建Socket连接、发送和接收数据等操作。通过使用socket
库,我们可以实现端口的查看和管理。
以下是使用socket库查看已经开启的端口的示例代码:
import socket
def get_open_ports():
open_ports = []
for port in range(1, 65536):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('localhost', port))
if result == 0:
open_ports.append(port)
sock.close()
return open_ports
if __name__ == '__main__':
open_ports = get_open_ports()
print("已开启的端口:", open_ports)
在上述代码中,我们通过循环遍历1到65535的端口号,使用socket
库的connect_ex
方法来尝试连接每个端口。如果连接成功(返回值为0),则说明该端口是开启状态,我们将其添加到open_ports
列表中。最后,打印出已开启的端口。
psutil库
psutil
是一个跨平台的进程和系统工具库,可以方便地获取系统信息和进程信息。其中,它提供了一个net_connections
方法,可以获取当前网络连接的详细信息,包括端口号和状态等。
以下是使用psutil库查看已经开启的端口的示例代码:
import psutil
def get_open_ports():
open_ports = []
for conn in psutil.net_connections():
if conn.status == 'ESTABLISHED':
open_ports.append(conn.laddr.port)
return open_ports
if __name__ == '__main__':
open_ports = get_open_ports()
print("已开启的端口:", open_ports)
在上述代码中,我们通过遍历psutil.net_connections()
的返回结果,判断每个连接的状态是否为“ESTABLISHED”(已建立连接),如果是,则将该连接的本地端口号添加到open_ports
列表中。最后,打印出已开启的端口。
netstat命令
netstat
是一个用于显示网络连接、路由表和网络接口等网络相关信息的命令行工具。在Python中,我们可以使用subprocess
模块来执行系统命令,并获取命令的输出结果。
以下是使用netstat命令查看已经开启的端口的示例代码:
import subprocess
def get_open_ports():
output = subprocess.check_output(['netstat', '-ano'])
open_ports = []
for line in output.splitlines():
fields = line.split()
if len(fields) >= 2 and fields[-1] == 'LISTENING':
port = fields[-2].split(':')[-1]
open_ports.append(int(port))
return open_ports
if __name__ == '__main__':
open_ports = get_open_ports()
print("已