import socket import struct import sys import time if len(sys.argv) == 1: print(''' Send data from server to 1 or more clients via multicast. mtest1.py client -> Listen to 225.100.100.100 and display what is received. mtest1.py server -> Send repeated times to 255.100.100.100. ''') elif sys.argv[1] == 'client': sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('', 6543)) mreq = struct.pack('4sl', socket.inet_aton('225.100.100.100'), socket.INADDR_ANY) sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) while True: print(sock.recv(4096)) elif sys.argv[1] == 'server': sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 10) try: count = int(sys.argv[3]) except: count = 1 try: text = sys.argv[2] except: text = "hello" for i in range(count): sock.sendto(bytes(('%s of %s: ' + text )% (i, count), 'ascii'), 0, ('225.100.100.100', 6543)) time.sleep(0.001)