python多线程扫描端口示例

 更新时间:2014年01月16日 14:25:54   作者:  
这篇文章主要介绍了python多线程扫描端口示例,大家参考使用吧

复制代码 代码如下:

# -*- coding: cp936 -*-
import socket
from threading import Thread,activeCount,Lock
from time import ctime
mutex = Lock()

class Loop(Thread):
    def __init__(self,ip,port,que):
        Thread.__init__(self)
        self.ip     = ip
        self.port   = port
        self.que    = que

    def run(self):
        global mutex
        try:
            client = socket.socket()
            indicator = client.connect_ex((self.ip,self.port))
            if mutex.acquire(1):
                if indicator == 0:
                    que.append(self.ip+'\t'+str(self.port))
                else:
                    print self.ip,'\t',str(self.port),'不可达'
                mutex.release()
        except:
            if mutex.acquire(1):
                print self.ip,'\t',str(self.port),'不可达'
                mutex.release()

class Main(Thread):
    def __init__(self,ip,que):
        Thread.__init__(self)
        self.ip  = ip
        self.que = que

    def run(self):
        i = 0
        while i < 65536:
            if activeCount() <= 200:
                Loop(ip=self.ip,port=i,que=self.que).start()
                i = i + 1

if __name__ == '__main__':
    que = []
    ip = raw_input('IP=')

    main = Main(ip = ip,que = que)
    main.start()

    while True:
        if activeCount() <= 1 and main.isAlive() == False:
            break

    print ''
    f = open('portOpen.py','a')
    f.write("'''")
    f.write(ctime()+'\n')
    f.flush()
    for i in range(0,len(que)):
        print que[i]
        f.write('\t'+que[i]+'\n')
        f.flush()
    f.write("'''")
    f.close()

    raw_input()

'''Mon Jan 13 07:12:53 2014
 localhost 135
 localhost 1028
 localhost 8048
 localhost 8080
 localhost 8181
 localhost 8730
 localhost 12040
 localhost 12897
 localhost 18040
 localhost 18611
''''''Tue Jan 14 10:04:58 2014
 localhost 135
 localhost 1028
 localhost 8048
 localhost 8080
 localhost 8181
 localhost 12897
 localhost 18040
 localhost 18611
'''

相关文章

  • centos6.4下python3.6.1安装教程

    centos6.4下python3.6.1安装教程

    这篇文章主要为大家详细介绍了centos6.4下python3.6.1的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Python获取字典中的值的八种方法

    Python获取字典中的值的八种方法

    Python 字典(dictionary)是一种可变容器模型,可以存储任意数量的任意类型的数据,字典通常用于存储键值对,每个元素由一个键(key)和一个值(value)组成,键和值之间用冒号分隔,本文给大家介绍了Python 字典取值的几种方法及其代码演示,需要的朋友可以参考下
    2024-07-07
  • Python简单几步画个钻石戒指

    Python简单几步画个钻石戒指

    这篇文章主要介绍了Python简单几步画个钻石戒指,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • Python3 assert断言实现原理解析

    Python3 assert断言实现原理解析

    这篇文章主要介绍了Python3 assert断言实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 使用Python读取和写入JSON文件的代码示例

    使用Python读取和写入JSON文件的代码示例

    在Python开发中,处理JSON数据是非常常见的任务,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,本文给大家介绍了如何使用 Python 读取和写入 JSON 文件,需要的朋友可以参考下
    2024-12-12
  • python处理中文编码和判断编码示例

    python处理中文编码和判断编码示例

    在开发自用爬虫过程中,有的网页是utf-8,有的是gb2312,有的是gbk,如果不加处理,采集到的都是乱码,解决的方法是将html处理成统一的utf-8编码
    2014-02-02
  • Python练习-购物单

    Python练习-购物单

    这篇文章主要介绍了Python练习-购物单,下文主要以举例说明从问题描述开始,以及解题思路展开文章内容,作为日常学习小练习,需要的小伙伴可以参考一下
    2022-01-01
  • 使用python实现简单爬取网页数据并导入MySQL中的数据库

    使用python实现简单爬取网页数据并导入MySQL中的数据库

    这篇文章主要为大家详细介绍了如何使用 python 实现简单爬取网页数据并导入 MySQL 中的数据库,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-06-06
  • Python推导式数据处理方式

    Python推导式数据处理方式

    这篇文章主要介绍了Python推导式数据处理方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • pytorch visdom安装开启及使用方法

    pytorch visdom安装开启及使用方法

    这篇文章主要介绍了pytorch visdom安装开启及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论