import socket import struct def start_server(ip, port): server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Enable port reusage server_socket.bind(('', port)) # Bind to the port, not the multicast IP print(f"UDP server listening on {ip}:{port}") # Join the multicast group mreq = struct.pack("4sl", socket.inet_aton(ip), socket.INADDR_ANY) server_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) while True: data, addr = server_socket.recvfrom(1024) # buffer size is 1024 bytes print(f"received message: {data} from {addr}") if __name__ == "__main__": start_server("239.1.2.3", 1234)