python怎么获取局域网内的设备

54次阅读
没有评论

共计 867 个字符,预计需要花费 3 分钟才能阅读完成。

要获取局域网内的设备,可以使用 Python 的 socket 库和网络扫描工具。

下面是一个使用 Python 的 socket 库实现局域网设备扫描的例子:

import socket

def scan_devices():
    # 获取本机 IP 地址 
    ip = socket.gethostbyname(socket.gethostname())
    
    # 获取局域网前缀 
    prefix = '.'.join(ip.split('.')[:-1]) + '.'
    
    # 遍历局域网 IP 地址,扫描设备 
    devices = []
    for i in range(1, 255):
        address = prefix + str(i)
        try:
            # 创建 socket 连接 
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(0.1)
            
            # 尝试连接 IP 地址 
            result = s.connect_ex((address, 80))
            
            # 如果连接成功,则表示设备存在 
            if result == 0:
                devices.append(address)
                
            # 关闭 socket 连接 
            s.close()
        except socket.error:
            pass
    
    return devices

# 调用函数进行设备扫描 
devices = scan_devices()

# 打印扫描到的设备 
for device in devices:
    print(device)

这个例子中,我们首先通过 socket.gethostbyname(socket.gethostname()) 方法获取本机 IP 地址,然后通过拆分 IP 地址,获取局域网的前缀。然后使用循环遍历局域网内的 IP 地址,通过创建 socket 连接和尝试连接 IP 地址的方式来判断设备是否存在。

需要注意的是,这个例子只能扫描局域网内的设备,并且只能确认设备是否开放了 80 端口(HTTP 端口)。如果设备开放了其他端口,或者使用其他协议,需要修改端口号和连接方式。另外,这个例子只适用于 IPv4 网络,不适用于 IPv6 网络。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-13发表,共计867字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)