Multithreading Python端口线程
我正在尝试用python3.5构建一个线程端口扫描程序,这是一个简单的TCP_全连接端口扫描程序。我很难使用锁,我已经尝试在线程模块中使用信号量和Lock()函数 脚本工作正常,但输出(本例中为关闭或打开的端口)非常混乱,就像根本没有锁一样。我试着用带锁和不带锁的方式使用它,结果在两种方式下都是无序的。我做错什么了吗Multithreading Python端口线程,multithreading,python-3.x,Multithreading,Python 3.x,我正在尝试用python3.5构建一个线程端口扫描程序,这是一个简单的TCP_全连接端口扫描程序。我很难使用锁,我已经尝试在线程模块中使用信号量和Lock()函数 脚本工作正常,但输出(本例中为关闭或打开的端口)非常混乱,就像根本没有锁一样。我试着用带锁和不带锁的方式使用它,结果在两种方式下都是无序的。我做错什么了吗 import threading,socket from queue import Queue host='www.google.co.uk' print_lock = thre
import threading,socket
from queue import Queue
host='www.google.co.uk'
print_lock = threading.Lock()
def TCPFull_scan(port):
s1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s1.settimeout(0.2)
try:
s1.connect((host,port))
print_lock.acquire()
print('[>]Port:',port,'is !!Opened!!')
except:
print_lock.acquire()
print('[!]Port:',port,'is closed')
finally:
print_lock.release()
s1.close()
que = Queue()
def c_port():
while True:
port_c = que.get()
TCPFull_scan(port_c)
que.task_done()
for port in range(1,101):
que.put(port)
for scan in range(1,4):
t = threading.Thread(target=c_port)
t.daemon=True
t.start()
que.join()
问题是您没有使用锁进行打印,您应该使用:
s1.connect((host,port))
with print_lock:
print("whatever you want to print")
而不是
s1.connect((host,port))
print_lock.acquire()
print('[>]Port:',port,'is !!Opened!!')
问题是您没有使用锁进行打印,您应该使用:
s1.connect((host,port))
with print_lock:
print("whatever you want to print")
而不是
s1.connect((host,port))
print_lock.acquire()
print('[>]Port:',port,'is !!Opened!!')