Port Scanner无法扫描求助:Python脚本无输出且持续加载
端口扫描脚本无输出且持续加载的排查方案
超时设置缺失:Python socket模块的
connect()方法默认没有超时限制,一旦目标端口无响应,程序会一直阻塞等待连接结果,这就是你看到的持续加载状态。解决办法是给socket实例设置超时,比如在创建socket后添加s.settimeout(1)(单位秒,可根据网络情况调整),或者使用connect_ex()方法配合超时,避免无限等待。代码顺序/范围问题:检查你的代码结构,确保"Checking port"的打印语句在
try块外面、socket连接操作之前执行,不然连接卡住的话提示根本没机会输出。另外确认端口循环范围是否正确,比如要扫描50-80(包含80),得用range(50, 81),range(50,80)只会扫描到79端口。如果把整个循环放在单个try-except里,第一个端口卡住会导致后续所有端口都无法处理。VM网络/防火墙问题:先确认Oracle VM里的目标主机和你的开发主机在同一网段,能正常ping通。另外检查目标主机的防火墙规则,是否拦截了50-80端口的TCP连接请求,防火墙的静默拦截会让socket连接一直处于等待状态。
示例修正代码:
import socket target_ip = "你的目标IP地址" # 扫描50到80端口(包含80) for port in range(50, 81): print(f"Checking port {port}") try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置1秒超时,避免无限阻塞 sock.settimeout(1) # connect_ex返回0表示端口开放,非0为关闭/无法连接 conn_status = sock.connect_ex((target_ip, port)) if conn_status == 0: print(f"Port {port} is OPEN") sock.close() except Exception as err: print(f"Port {port} error: {str(err)}")
内容的提问来源于stack exchange,提问作者Chitransh Mathur
相关产品推荐
相关产品推荐

