要将套接字设置为允许接收广播
将消息发送给局域网所有网段
广播风暴:在一个网络中大量发送广播会占用大量带宽
发送端:
from socket import * from time import sleep # 发送广播的地址 dest=('172.168.31.255',9999) s=socket(AF_INET,SOCK_DGRAM) s.setsockopt(SOL_SOCKET,SO_BROADCAST,1) while True: sleep(1) s.sendto('正在发送广播'.encode(),dest) data,addr=s.recvfrom(1024) print('接收到的内容'%(data.decode()))
接收端:
from socket import * HOST='' PORT=9999 #创建套接字 s=socket(AF_INET,SOCK_DGRAM) #设置套接字可以接收广播 s.setsockopt(SOL_SOCKET,SO_BROADCAST,1) #设置端口可以重用 s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #固定接收端的端口号 s.bind((HOST,PORT)) while True: try: message,addr=s.recvfrom(4096) print('从{}获取信息{}:'.format(message,addr)) s.sendto(b'I am here',addr) except(KeyboardInterrupt,SyntaxError): raise except Exception as e: print(e)