一.Queue模块基础

q = Queue.Queue()    
q.qsize()           返回队列的大小  
q.empty()         如果队列为空,返回True,反之False  
q.full()          如果队列满了,返回True,反之False
q.full              与 maxsize 大小对应  
q.get([block[, timeout]]) 获取队列,timeout等待时间  
q.get_nowait()         相当q.get(False)
q.put(item)           写入队列,timeout等待时间  
q.put_nowait(item)    相当q.put(item, False)
q.task_done()         在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号
q.join()             实际上意味着等到队列为空,再执行别的操作

二.threading模块基础

t = threading.Thread             使用它来创建线程
t.start()                           开始线程的执行
t.run()                           包含了线程实际执行的内容
t.join(timeout=None)               被调用 join() 方法的线程会一直阻塞调用者的线程,直到自己结束
t.name                           用于鉴别进程的一个字符串
t.getName()/t.setName()           为后向兼容而保留的方法,现在请直接通过 name 属性来访问
t.ident                           如果线程还未开始,则值为 None
t.is_alive()                       返回本进程是否是 alive 状态
t.daemon                       标明本进程是否为“daemon thread”。一定要在 start() 被调用前设定,否则引发 RuntimeError。
t.isDaemon() / t.setDaemon()        为后向兼容而保留的方法,现在请直接访问 daemon 属性
lock = threading.Lock
lock.acquire(blocking=True,timeout=-1)        获取一个锁
lock.release()                              释放一个锁

三.多线程端口扫描器

# -*- coding: utf-8 -*-
__author__ = 'Dleo'
import sys
import socket
import threading
import Queue ports=[21,80,445,3389]
queue = Queue.Queue() def ip_c(ip):
new_ip = []
for ip_c in range(1,255):
new_ip.append(str(ip) + "." + str(ip_c))
#print new_ip
return new_ip class ThreadNum(object):
def __init__(self, queue):
self.queue = queue
self.lock = threading.Lock()
def port_open(self):
while True:
try:
try:
ip = self.queue.get(timeout=1)
except:
break
for port in ports:
socket.setdefaulttimeout(0.5)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if s.connect_ex((ip, port)) == 0:
self.lock.acquire()
print (ip + ':' + str(port) + ' is openning')
self.lock.release()
s.close()
except:
pass
self.queue.task_done()
def run (self):
tmp = []
for i in range(255):
t = threading.Thread(target=self.port_open)
t.setDaemon(True)
t.start()
tmp.append(t)
for t in tmp:
t.join() if __name__ == '__main__':
if len(sys.argv) != 2:
print "please put ip like this '127.0.0' "
sys.exit()
ip = sys.argv[1]
for i in ip_c(ip):
queue.put(i)
t = ThreadNum(queue)
t.run()

效果图:

用threading和Queue模块实现多线程的端口扫描器的更多相关文章

  1. perl多线程tcp端口扫描器(原创)

    perl多线程tcp端口扫描器(原创) http://bbs.chinaunix.net/thread-1457744-1-1.html perl socket 客户端发送消息 http://blog ...

  2. Python中Queue模块及多线程使用

    Python的Queue模块提供一种适用于多线程编程的FIFO实现.它可用于在生产者(producer)和消费者(consumer)之间线程安全(thread-safe)地传递消息或其它数据,因此多个 ...

  3. day09 threading, paramiko, queue 模块

    1 模拟ssh 2 锁 内部锁,程序锁,信号量 3 多线程 4  简单消息队列 先来看模拟ssh  ,python 的强大之处就是因为有很多模块,可以很简单的完成复杂的事情,今天我们用paramiko ...

  4. 再议perl写多线程端口扫描器

    再议perl写多线程端口扫描器 http://blog.csdn.net/sx1989827/article/details/4642179 perl写端口多线程扫描器 http://blog.csd ...

  5. python-网络安全编程第六天(threading多线程模块&Queue模块&subprocess模块)

    前言 昨天晚上9点多就睡了 2点起来没睡意... 那就学习吧emmmm ,拿起闲置几天的python课程学习.学习到现在5.58了 总结下 继续开始学习新的内容 多多线程? 线程(英语:thread) ...

  6. threading模块和queue模块实现程序并发功能和消息队列

    简介: 通过三个例子熟悉一下python threading模块和queue模块实现程序并发功能和消息队列. 说明:以下实验基于python2.6 基本概念 什么是进程? 拥有独立的地址空间,内存,数 ...

  7. Python:使用threading模块实现多线程编程

    转:http://blog.csdn.net/bravezhe/article/details/8585437 Python:使用threading模块实现多线程编程一[综述] Python这门解释性 ...

  8. 【Python】 多线程并发threading & 任务队列Queue

    threading python程序默认是单线程的,也就是说在前一句语句执行完之前后面的语句不能继续执行(不知道我理解得对不对) 先感受一下线程,一般情况下: def testa(): sleep(1 ...

  9. python学习笔记之使用threading模块实现多线程(转)

    综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势 ...

随机推荐

  1. 爬虫学习之-scrapy交互式命令

    scrapy shell https:///www.baidu.com  会启动爬虫请求网页 view(response) 会在浏览器打开请求到的临时文件 response.xpath("/ ...

  2. IPV6 简单验证

    1. 网络路由器的分类 .通常将网络中直接面向用户连接或访问网络的部分称为接入层,接入层目的是允许终端用户连接到网络,因此接入层交换机具有低成本和高端口密度特性: .将位于接入层和核心层之间的部分称为 ...

  3. Embarcadero Delphi 7 Enterprise 7.0.4.453 中文版

    在 win7下可能报错请大家按下面的方式 delphi7运行不正常的提示unable to rename'c:\program files\Borland\delphi7\Bin\delphi32.$ ...

  4. 【原创】 PLSQL 索引排序优化

    转载请注明出处 select /*+INDEX_DESC(T IDX_SYS_MESS_CREATE_DATE)*/ * FROM sys_message T where t.create_date ...

  5. Mysql索引机制B+Tree

    1.问题引入 有一个用户表,为了查询的效率,需要基于id去构建索引.构建索引我们需要考虑两个方面的问题,1个是查询的效率,1个是索引数据的存储问题.该表的记录需要支持百万.千万.甚至上亿的数据量,如果 ...

  6. BZOJ 2738 子矩阵第k大 | 二维树状数组 整体二分 分治

    BZOJ 2738 "矩阵乘法"(子矩阵第k大) 题意 给出一个矩阵,多次询问子矩阵中第k大的数是多少. 题解 我做这道题之前先照着这道题出了一道题,是这道题的一维版本,在这里:h ...

  7. 【XSY2307】树的难题

    Description Solution 看到这种路径统计问题,一般就想到要用点分治去做. 对于每个重心\(u\),统计经过\(u\)的合法的路径之中的最大值. 第一类路径是从\(u\)出发的,直接逐 ...

  8. 前端学习 -- Css -- 伪元素

    :first-letter 表示第一个字符 :first-line 表示文字的第一行 :before 选中元素的最前边,一般该伪类都会结合content一起使用,通过content可以向指定位置添加内 ...

  9. Android proguard-rules.pro 混淆模板

    在../sdk/tools/proguard/目录下,其中包含了android最基本的混淆 ..\proguard-rules.pro  混淆文件配置模板: ############# 混淆模板 ## ...

  10. Linux上给php配置redis扩展

    说明,在项目开发中难免会遇到redis中,那我应该如何配置redis这样的一个扩展呢,看下面流程: 一.安装Redis PHP在安装redis扩展时,难免要看一下官网下载安装流程,链接如下: http ...