# 服务端(视频源) - 完全不知道谁在接收
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
multicast_group = '224.1.1.1'
server_port = 5000
# 服务器只是往组播地址发送数据
while True:
video_data = get_video_frame()
server_socket.sendto(video_data, (multicast_group, server_port))
# 客户端(观众) - 主动加入组播组
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
multicast_group = '224.1.1.1'
port = 5000
# 1. 绑定端口
client_socket.bind(('', port))
# 2. 加入组播组(关键步骤!)
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
client_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
# 3. 接收数据
while True:
data, addr = client_socket.recvfrom(1024)
# 处理视频数据