multithreading - 线程端口扫描器python
问题描述
import socket
import threading
from Queue import *
print_lock = threading.Lock()
serverIp = socket.gethostbyname('www.google.com')
def pscan(port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((serverIp, port))
with print_lock:
print('Port %d is open' %(port))
s.close()
except:
pass
def threader():
while True:
worker = q.get()
pscan(worker)
q.task_done()
q = Queue()
for x in range(30):
t = threading.Thread(serverIp = threading)
t.daemon = True
t.start()
for worker in range(1, 101):
q.put(worker)
q.join()
我正在尝试在 PyCharm 中对端口扫描器进行线程化,但是我不断收到的错误是serverIp
行上的意外关键字参数t = threading.Thread(serverIp = threading)
这是什么亵渎??
解决方案
你试图让它变得太复杂。这是一个更清晰的版本,它适用于 Pycharm。(学分 JackalDev)
import socket
import threading
import concurrent.futures
import colorama
from colorama import Fore
colorama.init()
print_lock = threading.Lock()
ip = input(Fore.BLUE + "Enter the IP to scan: ")
def scan(ip, port):
scanner = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
scanner.settimeout(1)
try:
scanner.connect((ip, port))
scanner.close()
with print_lock:
print(Fore.BLUE + f"[{port}]" + Fore.GREEN + " Opened")
except:
pass
with concurrent.futures.ThreadPoolExecutor(max_workers=100) as executor:
for port in range(1000):
executor.submit(scan, ip, port + 1)
推荐阅读
- c - C中的变量声明和范围
- ios - Xamarin Forms CollectionView 抛出 NSInternalInconsistencyException
- css - 鼠标悬停在 SVG (Inkscape)
- wordpress - 强制 SSL 后访问 wp-admin 时出现问题
- mysql - MySQL 将来自两个单独且复杂的查询的列组合成一行
- php - 注意:未定义的偏移量:PHP 数组中的 1
- c# - C# Globalization 的 GetCultureTableRecord 上的对象引用异常
- python - Folium TimestampedGeoJson 地图中的弹出问题
- javascript - 如何用相同的功能填充两个输入以及如何添加最大值?
- java - 在带有 mule 的 drools 规则中使用 Java 方言