IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 使用多线程技术批量查询随机生成的 IP 地址的归属地。 -> 正文阅读

[网络协议]使用多线程技术批量查询随机生成的 IP 地址的归属地。

from threading import Thread,Lock
import requests
import json
from random import choice

class AddressAttribution(Thread):
    def __init__(self,id, ip):
        #super(AddressAttribution, self).__init__()
        Thread.__init__(self)

        self.ip = ip
        self.id = id

    def run(self):
        url = 'http://ip-api.com/json/%s' % self.ip
        page = requests.get(url).text
        dict_data = json.loads(page)
        lock.acquire()
        city = dict_data.get('city')
        country = dict_data.get('country')

        if (city and country):
            print(f"【id】:{self.id}  【ip】:{self.ip:>15}  【city】: {city:>20}  【country】: {country:>15}")

        lock.release()

if __name__ == '__main__':
    threads = []
    lock = Lock()

    for i in range(1, 1):
        r = range(1, 150)
        id = i
        ip = f'{choice(r)}.{choice(r)}.{choice(r)}.{choice(r)}'

        thread = AddressAttribution(id, ip)
        thread.start()

        threads.append(thread)

    [thread.join() for thread in threads]

    print("主线程...")

# 2、使用多线程技术批量 PING 同网段内所有设备。
from threading import Thread,Lock
from subprocess import Popen, PIPE, STDOUT

def ping(ip): 
    # -c compartment 路由隔离舱标识符。
    # -w timeout     等待每次回复的超时时间(毫秒)。
    response = Popen(["ping", "-c", "1", "-w", "10", ip.strip()],
    stdout=PIPE,
    stderr=STDOUT)
    stdout, stderr = response.communicate() 

    ls = str(stdout).split(r"\r\n")

    lines =str(stdout, 'gbk').split("\r\n")
    
    lock.acquire()

    if (response.returncode == 0 and len(lines) > 10):
        status = f"来自 {ip} 的回复: 可以访问目标主机。"
    else:
        status = f"来自 {ip} 的回复: 无法访问目标主机。"

    print(status) 

    lock.release()

if __name__ == '__main__':
    lock = Lock()
    net = '192.168.18.'
    print(f"打印网段的 {net}* 地址".center(50, '*'))
    threads = []

    for i in range(1, 10):
        ip = net + str(i)
        thread = Thread(target=ping, args=(ip,))
        thread.start()

    [thread.join() for thread in threads]

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:25:55  更:2022-04-06 16:26:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:49:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码