• 用线程安全的队列Queue实现扫描端口数据存储
  • 用多线程扫描端口
  • 用Thread类实现程序组织
#coding:utf-8
import sys
import socket
import sys
import re
from threading import Thread
from Queue import Queue class ScanPort(Thread): def __init__(self, target_ip, target_port, q):
super(ScanPort, self).__init__()
self.target_ip = target_ip
self.target_port = target_port
self.q = q def scan_port(self):
try:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((self.target_ip, self.target_port))
q.put(str(self.target_port) + 'is opening')
s.close()
except Exception,e:
pass def run(self):
self.scan_port() if __name__ == '__main__':
port_list = [21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080 ,9015]
target_ip = sys.argv[1]
q = Queue() portThreadList = [ ScanPort(target_ip, port, q) for port in port_list ] for t in portThreadList:
t.setDaemon(True)
t.start() for t in portThreadList:
t.join() # end进入队列,表示扫描结束
q.put('end') while True:
result = q.get()
print result
if re.search(r'end', result):
break

最新文章

  1. php模板引擎
  2. atoi、stoi、strtoi区别
  3. 启动及重新启动nginx,重启nginx后丢失nginx.pid问题解决
  4. A计划(bfs)
  5. 把MSSQL的表数据查询成 insert into格式的函数
  6. DirectX11 With Windows SDK--12 深度/模板状态、平面镜反射绘制
  7. java中变量关系
  8. 种花 [JZOJ4726] [可撤销贪心]
  9. asp.net loading 动画
  10. Zookeeper-基本概念
  11. gradle set
  12. 为什么今天的L4无人驾驶无法到达终局(转)
  13. extjs_05_grid(表格分组)
  14. 12只超酷机器人,在家用3D打印搞定!
  15. 在C#中internal、protected internal关键字是什么意思?
  16. 微信小程序-学习总结(1)
  17. 2、OpenCV Python 图像属性获取
  18. C++开源库(一) ----log4cpp详解
  19. RHEL 6.5----CDN(lumanger)
  20. mysql proxy讀寫分流(二)-加入RW splitting

热门文章

  1. data数据不一致的问题
  2. XAMPP搭建PHP
  3. hadoop新增kerberos租户
  4. c#开发wps插件(3)部署
  5. 无需安装Oracle Client连接Oracle数据库
  6. SQL Server将自己的查询结果作为待查询数据子列之一
  7. Solidity调试 - 实现变量打印
  8. Sqoop工具
  9. 十倍效能提升——Web 基础研发体系的建立
  10. jmockito模拟方法中参数如何指定