Python3端口扫描仪可以';t解决插座问题
当我运行此代码时,我收到以下套接字错误: [WinError 10038]尝试对非套接字的对象执行操作 但即使我删除了Python3端口扫描仪可以';t解决插座问题,python,sockets,port-scanning,Python,Sockets,Port Scanning,当我运行此代码时,我收到以下套接字错误: [WinError 10038]尝试对非套接字的对象执行操作 但即使我删除了s.close(),它也会给出错误的结果 这是一个端口扫描程序,它将尝试连接到我要扫描的服务器上的所有端口。我从中获得连接的数据存储在一个列表中。但出于某种原因,它给了我错误的结果。谁能帮帮我吗 import socket import threading def scan_for_open_ports(): #Creating variables OpenPo
s.close()
,它也会给出错误的结果
这是一个端口扫描程序,它将尝试连接到我要扫描的服务器上的所有端口。我从中获得连接的数据存储在一个列表中。但出于某种原因,它给了我错误的结果。谁能帮帮我吗
import socket
import threading
def scan_for_open_ports():
#Creating variables
OpenPorts = []
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = input('Host to scan: ')
global port
global OpenPorts
port = 1
#Scanning
for i in range(65534):
try:
s.connect((host, port))
s.shutdown(2)
OpenPorts.append(port)
print(str(port) + 'is open.')
s.close()
port += 1
except socket.error as msg:
print(msg)
s.close()
show_user()
def show_user():
#Giving the user results
print('------Open porst-----\n')
print(OpenPorts)
这是因为您正在使用
s.close()
关闭循环内的套接字,并且您不再打开它,而是尝试连接到已关闭的套接字。循环结束时,您应该关闭套接字,我还修改了代码,使OpenPorts
全局化,并删除您在for循环中定义并递增的不必要的port
变量
import socket
OpenPorts = []
def scan_for_open_ports():
# Creating variables
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = input('Host to scan: ')
# Scanning
for port in range(1, 65534):
try:
s.connect((host, port))
OpenPorts.append(port)
print(str(port) + 'is open.')
except socket.error as msg:
print(msg)
s.close()
show_user()
def show_user():
# Giving the user results
print('------Open ports-----\n')
print(OpenPorts)
scan_for_open_ports()
考虑接受我的答案,如果它对你有用: