首页 > 解决方案 > 套接字显示所有端口已关闭

问题描述

我试图通过套接字扫描端口,但它显示所有端口都已关闭。这是我的代码:

import socket

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = input(" Please Input Ip address To Scan ")
#port = input(" ENter The Port ")
def portscanner(host):
    for port in range(1,150):
        if sock.connect_ex((host,int(port))):
            print(f"{port} Is Closed")
        else:
            print("port is open")
    
portscanner(host)

标签: pythonsocketsport

解决方案


尝试在 forloop 中创建一个连接。并确保输入的格式有效。你可以在 sock.connect_ex 附近使用 try 和 catch 来检查你是否真的发送了有效的主机。

为了使事情变得更快,您也可以在 for 循环中使用 settimeout(0.25) 。

我本来打算这样做——

for port in range(start, end):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(.25)
        result = sock.connect_ex((host, port))
        if result == 0:
            print(port,'port is open')
 
        sock.close()

推荐阅读