欢迎访问宙启技术站
智能推送

利用Python实现的基于Socket的端口状态检测器

发布时间:2023-12-12 10:18:11

Python是一种多用途的编程语言,可以用于开发各种应用,包括网络应用。其中,基于Socket的端口状态检测器是一个非常实用的工具,可以用来检测指定主机上的端口是否打开。

下面是一个简单的Python脚本,可以实现端口状态检测器:

import socket

def check_port(host, port):
    # 创建一个socket对象
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    try:
        # 尝试连接到指定主机和端口
        s.connect((host, port))
        
        # 连接成功,打印端口状态
        print(f"Port {port} is open")
    
    except socket.error:
        # 连接失败,打印端口状态
        print(f"Port {port} is closed")

    # 关闭socket连接
    s.close()

# 使用例子
host = "127.0.0.1"  # 指定主机IP地址
ports = [80, 443, 22]  # 指定要检测的端口列表

for port in ports:
    check_port(host, port)

上述代码中,我们首先导入了Python的Socket库,然后定义了一个check_port函数,用于检测指定主机和端口的连接状态。

check_port函数内部,我们首先创建一个socket对象,并通过socket.AF_INET标识使用IPv4协议,socket.SOCK_STREAM表示使用TCP协议。

然后,我们尝试使用connect方法连接到指定的主机和端口。如果连接成功,则打印端口状态为“打开”,否则打印端口状态为“关闭”。

最后,我们在使用例子中指定主机IP地址和要检测的端口列表,通过遍历端口列表调用check_port函数进行端口状态检测。

使用该脚本,我们可以方便地检测指定主机上多个端口的连接状态。例如,我们可以检测本地主机(IP地址为127.0.0.1)上的80、443和22端口的状态:

Port 80 is open
Port 443 is open
Port 22 is closed

通过这个简单的Python脚本,我们可以实现一个基于Socket的端口状态检测器,并灵活地应用于不同的网络应用场景中。