20 lines
770 B
Python
20 lines
770 B
Python
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)
|