Python 2.7 如何循环要扫描的端口?

Python 2.7 如何循环要扫描的端口?,python-2.7,loops,networking,port-scanning,Python 2.7,Loops,Networking,Port Scanning,我有一个portscanner的问题,它一直挂在扫描端口1上。我怎样才能解决这个问题 #/usr/bin/env python 导入套接字 导入子流程 从日期时间导入日期时间 #清除屏幕 subprocess.call('clear',shell=True) def portscan(): 服务器=原始输入(“输入要扫描的服务器:”) serverIP=socket.gethostbyname(服务器) #打印带有主机信息的横幅 打印“[+]主机:{}[+]\nIP地址:{}\n”。格式(服务器

我有一个portscanner的问题,它一直挂在扫描端口1上。我怎样才能解决这个问题

#/usr/bin/env python
导入套接字
导入子流程
从日期时间导入日期时间
#清除屏幕
subprocess.call('clear',shell=True)
def portscan():
服务器=原始输入(“输入要扫描的服务器:”)
serverIP=socket.gethostbyname(服务器)
#打印带有主机信息的横幅
打印“[+]主机:{}[+]\nIP地址:{}\n”。格式(服务器,服务器IP)
打印“[!]请稍候,正在扫描打开的服务…\n”
#开始扫描的时间。
t1=datetime.now()
尝试:
对于范围(1024)内的端口:
sock=socket.socket(socket.AF\u INET,socket.sock\u流)
结果=sock.connect_ex((服务器IP,端口))
如果结果==0:
打印“[+]端口{}:状态:打开\n”。格式(结果)
sock.close()
除socket.gai错误外:
打印“无法解析主机名,正在退出…\n”
sys.exit()
除socket.error外:
打印“无法连接到服务器,正在退出\n”
sys.exit()
#再次检查时间
t2=datetime.now()
#计算扫描的持续时间
总时间=t2-t1
打印“扫描完成,持续时间:{}\n”。格式(totaltime)
当我运行它时会发生什么?我给它一个主机名并将其解析为IP地址 地址,但每当扫描开始时,它会像我看到的那样继续扫描端口1 在Wireshark


我想你可能需要一个
超时时间

最后,您的
sock.connect_ex()
,将引发异常
socket.error:[Errno 110]连接超时
,您可以在本文中了解更多信息

但是默认的超时时间可能是120秒,也许你不想等那么久。因此,您可以设置自己的超时,如下所示:

试试看:
对于范围(1024)内的端口:
sock=socket.socket(socket.AF\u INET,socket.sock\u流)
sock.settimeout(10)#超时设置为等待10秒。
结果=sock.connect_ex((服务器IP,端口))
sock.settimeout(无)
要了解为什么要使用
sock.settimeout(None)
,并查看设置
timeout
的其他方法,您可以阅读以下内容

我不确定这是否是你要找的,但我希望它能帮上忙