我正在使用python套接字库制作一个端口扫描仪,它基本上试图连接到端口上的IP。如果它能够连接,则端口显示为打开,否则,它显示端口为关闭。
请注意,这只是一个基本的端口扫描仪,我仍在努力。
所以,我在想,为什么我不在for循环之外启动套接字实例,因为我的代码每次都在创建一个新实例
但是,当我尝试的时候,它说每个港口都关闭了
这是我在for循环之前使用的代码段-
socket_instance = socket.socket()
socket_instance.settimeout(0.5)
(我不知道python中的套接字编程)
以下是正常工作的代码的主要部分-
def scan_ports(ip_address,port):
try:
socket_instance.connect((ip_address, port))
print("[+] Port "+str(port)+" is open")
socket_instance.close()
except:
# print("[-] Port "+str(port)+" closed")
pass
for port in range(1,501):
socket_instance = socket.socket()
socket_instance.settimeout(0.5)
scan_ports(ip_address,port)
所以我的问题是:我是否必须为每个端口创建一个套接字函数的新实例?
我不能对每个端口重复使用同一个实例吗?