我需要在Python上使用端口扫描程序提供一些帮助。我必须学习如何将threading
模块添加到它,但没有任何线索,并且不太了解我找到的一些教程和帮助。这是一个小测试脚本:
from socket import *
remote = raw_input ("Website: ")
remote_ip = gethostbyname(remote)
print "scaning at:",remote_ip
for i in range (20,100):
s = socket(AF_INET,SOCK_STREAM)
result = s.connect_ex((remote,i))
if result == 0):
print "port %d: open"%(i)
s.close
答案 0 :(得分:0)
如下所示。您将每个函数强制转换为一个单独的线程并将其踢掉。您还保留对每个线程的引用,以便您可以阻止主线程,直到它们全部执行完毕。你还需要一个锁,因为Python中的“print”不是线程安全的,否则你最终会得到每个线程的输出(否则你可以使用记录器,而不是线程安全和整洁)。这也会产生很多线程,因为我甚至没有打算向你展示池。这只是一个粗略的准备好的例子,让您开始在Python中发现多线程。
print_lock = Lock()
def socket_test(address, port):
s = socket(AF_INET,SOCK_STREAM)
result = s.connect_ex((address,port))
if result == 0:
with print_lock:
print "port %s: open" % port
s.close()
def main():
remote = raw_input("Website: ")
remote_ip = gethostbyname(remote)
print "scaning at:",remote_ip
threads = []
for i in range(20, 100):
new_thread = threading.Thread(socket_test(remote_ip, i))
new_thread.start()
threads.append(new_thread)
[this_thread.join() for this_thread in threads]