android udp 广播 代码

「案例」使用python给局域网设备发送udp广播并查看

功能说明:

广播使用广播地址,将消息发送到局域网中的每个主机,主机可以对收到的广播进行处理或不响应。应用场景:若局域网中有多台设备,每台设备的型号不一致,若快速区分,可收到广播后回复当前型号,用于管理设备

代码:

import socket
import time
import json
import psutil

# 发送广播
def main(win_ip,win_port,dev_ip,dev_port,message):
    
    # 设置目标地址
    dest = (dev_ip,dev_port) 

    # 创建广播发送器
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    # 设置允许广播,地址为接收数据地址
    s.bind((win_ip,win_port))

    # 设置套接字可以发送接收广播
    s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)

    #s.setblocking()#设置阻塞

    print ("获取电脑端的端口号信息:")
    # 'all', 'tcp', 'tcp4', 'udp', 'udp4', 'inet', 'inet4', 'inet6', 'tcp6', 'udp6'
    for session in psutil.net_connections(kind="udp"):
        if session.laddr.port == win_port:
            
            print (session)

    # 发送广播
    print ("发送广播:\n%s"%message)
    s.sendto(message.encode('utf-8'),dest)

    s.settimeout(2)  # 设置等待超时时间为5s

    while True:

        try:
            msg, addr  = s.recvfrom)

            if  msg:
                
                print('接收回复:\n服务端地址:%s\n响应内容:%s'%(addr, msg.decode('utf-8')))

            time.sleep()
            
        except Exception as e:
            #time.sleep)
            break

    s.close()



if __name__=="__main__":

    win_ip = '.x.x' 

    win_port = 
    
    dev_ip = '' # 单个设备:.x.x,多台设备

    dev_port = 

    message = '{"devtype":[]}'

    main(win_ip,win_port,dev_ip,dev_port,message)


执行:

测试结果:

原文链接:,转发请注明来源!