Python多线程扫描主机 三 范围IP&端口的扫描

前言

上文中已经实现获取范围中所有的IP+端口,这里实现使用多线程进行扫描调用

Python多线程扫描主机 二 范围IP&端口的扫描-CSDN博客上文已经实现UI,现在添加主功能,扫描IP功能首先导入socket包,然后尝试使用IP和端口进行扫描,完成如下,直接运行可测试https://blog.csdn.net/shaynerain/article/details/133393131

 系列

Python多线程扫描主机 一 UI实现和展示_shaynerain的博客-CSDN博客

Python多线程扫描主机 二 范围IP&端口的扫描-CSDN博客

Python多线程扫描主机 三 范围IP&端口的扫描-CSDN博客

 

多线程实现

首先需要明确,电脑中线程数量不能可能无限大,所以直接创建对应IP数量个数的线程不太现实,这里直接使用线程池来进行管理,线程池可以很好的管理线程,结束后,后面排队的自动开启,代码实现如下:

    def scan_fun(self, max, ips):
        """
        线程管理线程池方法
        :param max: 最大线程数
        :param ips: IP列表
        :return:
        """
        # 创建线程池
        with ThreadPoolExecutor(max_workers=max) as pool:
            # 传入调用的方法,和参数
            pool.map(self.scan_action, ips)
        # 提示完成
        print("完成")
        pass

    def scan_action(self, ip_port):
        """
        扫描方法
        :param ip_port:一个IP+端口
        :return:
        """
        # 拆分下IP和port
        ip, port = ip_port
        # 调用方法赛秒
        if scan(ip, port):
            # 这里扫描完成后索引值+1,这里需要线程锁,防止线程同时访问该值
            self.thread_lock.locked()
            # +1
            self.thread_index += 1
            # 提交进度
            self.thread_signal.emit({'progress': self.thread_index, "ip": "{}:{}".format(ip, port)})
            # 释放
            self.thread_lock.release()
        else:
            # 上锁
            self.thread_lock.locked()
            # +1
            self.thread_index += 1
            # 提交出去
            self.thread_signal.emit({'progress': self.thread_index, "ip": None})
            # 释放锁
            self.thread_lock.release()

解释一下:

第一个函数便是线程池进行管理,需要传入方法和参数

第二个函数是调用扫描方法,并且使用线程锁,来逐一增加进度,防止多个线程之间调用冲突

完整成品的exe下载连接

https://download.csdn.net/download/shaynerain/88383175

如果需要获取源码可点击里面的帮助,或者是访问如下连接

shop224652309.taobao.com/

from:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值