先放完整代码

import socket

IP = input("请输入目标IP")
start = int(input("请输入起始端口"))
end = int(input("请输入结束端口")) + 1

for port in range(start, end):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(2)
    try:
        result = sock.connect_ex((IP, port))
        if result == 0:
            print(IP,":{}已放开".format(port))
            sock.close()
    except Exception as e:
        pass

导入socket模块

import socket

获取使用者输入的IP,起始端口,终止端口信息,超时时限并用四个变量分别接收,终止端口后面加一方便使用后面的range循环

IP = input("请输入目标IP")
start = int(input("请输入起始端口"))
end = int(input("请输入结束端口")) + 1
s = int(input("请输入超时时限(秒)"))

开始循环端口号

for port in range(start, end):

创建套接字对象

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

设置超时时限并导入使用者的输入值

    sock.settimeout(s)

因为我们不一定能成功扫到对方的某个端口,故用try语句并尝试与目标端口进行连接

    try:
        result = sock.connect_ex((IP, port))

加入if语句,如果连接成功,打印ip+端口号,然后关闭套接字对象

        if result == 0:
            print(IP,":{}已放开".format(port))
            sock.close()

如果连接失败,则直接开始下一次循环

    except Exception as e:
        pass