我想知道为什么我的portScanner模块运行并声称我的所有端口都已关闭?
我正在运行Python 2.7,因为这就是Violent Python(该书)所使用的。
到目前为止,我尝试过的唯一解决方案是将DNS设置为8.8.8.8,将辅助设置为8.8.4.4,因为我的套接字采用了www.google.com'作为IP。
代码:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverIp = socket.gethostbyname('www.google.com')
def pscan(port):
try:
s.connect((serverIp,port))
return True
except:
return False
for x in range(1,101):
if pscan(x):
print("Port %d is open!!!" % (x))
else:
print("Port %d is closed" % (x))
答案 0 :(得分:1)
您只创建一个套接字并尝试在多个连接中使用它。这是不可能的。如果查看异常的详细信息,您会注意到第一个(端口1)缓慢失败,因为连接超时但由于“操作已在进行中”,所以后续都很快失败。
修复方法是在每个connect
之前创建一个新套接字。此外,减少尝试与s.settimeout(1)
建立联系的时间可能会有所帮助。