一、什么是广播
UDP 广播是一种网络通信的方式,在广域网或局域网中,UDP 广播可以向多个目标主机发送数据包,使得网络中的所有设备都能接收到广播消息。使用广播之后,socket 只需要发送一次 UDP 数据,就可以发送给本局域网中的任何一台电脑相同的数据。
二、UDP广播的流程
import socket # 导入socket模块
ss = socket.socket() # 创建服务器套接字
ss.setsockopt() # 设置UDP套接字允许广播
ss.bind() # 套接字与地址绑定
while True: # 监听连接
cs = ss.recvfrom()/ss.sendto() # 对话(接收/发送)
ss.close() # 关闭服务器套接字
from socket import socket
from socket import AF_INET, SOCK_DGRAM, SOL_SOCKET, SO_BROADCAST
from time import ctime
HOST = "127.0.0.1"
PORT = 8080
ADDRESS = (HOST, PORT)
BROADCAST_HOST = "<broadcast>" # <broadcast>会自动改为本局域网的广播ip
BROADCAST_PORT = 8086
BROADCAST_ADDRESS = (BROADCAST_HOST, BROADCAST_PORT)
udp_server = socket(AF_INET, SOCK_DGRAM) # 创建服务器套接字
udp_server.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) # 设置UDP允许广播
udp_server.bind(ADDRESS) # 套接字与地址绑定
while True: # 通信循环
content = input("请输入你要广播的内容:")
udp_server.sendto(f"【{ctime()}】{content}".encode("utf-8"), BROADCAST_ADDRESS) # 服务端发送广播内容
data, client_addr = udp_server.recvfrom(1024) # 服务端接收消息,单次最大接收为1024个字节
print(f"收到客户端【{client_addr}】返回的数据:{data.decode('utf-8')}")
udp_server.close() # 关闭服务器套接字
标签:UDP,06,socket,server,BROADCAST,广播,接字
From: https://www.cnblogs.com/kurome/p/17805982.html