先放完整代码
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