'''用来演示udp的广播应用'''
from socket import *
#创建套接字
sockfd = socket(AF_INET,SOCK_DGRAM)
#设置套接字可以发送接收广播
sockfd.setsockopt(SOL_SOCKET,SO_BROADCAST,1)
#固定接收端口(地址可以在一个网段内,但端口需要固定)
sockfd.bind(('0.0.0.0',9999))
while True:
try:
msg,addr = sockfd.recvfrom(1024)
print('从{}获取信息:{}'.format(addr,msg.decode()))
except (KeyboardInterrupt,SyntaxError):
raise
except Exception as e:
print(e) #忽略其他异常
sockfd.close()
广播发送端socket代码
from socket import *
from time import sleep
#设置目标地址,Linux可以使用ifconfig查询
dest = ('本网段的广播地址',9999)
s = socket(AF_INET,SOCK_DGRAM)
#设置能够发送广播
s.setsockopt(SOL_SOCKET,SO_BROADCAST,1)
while True:
sleep(2)
s.sendto('来呀,带你去看晴空万里'.encode(),dest)
s.close()