#!/usr/bin/python3
# coding UTF-8
import socket
import queue
import threading
# 端口扫描函数
def scan(ports):
while True:
if not ports.empty():
port=ports.get() #取用消息队列内的取用
#异常处理
try:
client=socket.socket() #创建客户端
client.connect(('www.baidu.com',port)) #端口连接
socket.setdefaulttimeout(1) #延时1秒
print(port) #打印可以连接的端口号,也就是开放的端口
client.close() #关闭客户端
except:
pass #连接请求没反应则跳过
# 消息队列
ports=queue.Queue()
for p in range(65536):
ports.put(p) #将所有端口放进消息队列,待取用
# 多线程
threads=[]
for i in range(10000):
t=threading.Thread(target=scan,args=(ports,)) #创建线程
threads.append(t)
for j in range(len(threads)):
threads[j].start()