#!/usr/bin/python import sys, os import socket, binascii if len(sys.argv) < 3: print "Usage: udp.py " exit(0) mcast_grp = sys.argv[1] mcast_port = int(sys.argv[2]) listen_addr = len(sys.argv) == 4 and sys.argv[3] or '0.0.0.0' sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 32) sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 1) sock.bind((mcast_grp, mcast_port)) host = listen_addr sock.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(host)) sock.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(mcast_grp) + socket.inet_aton(host)) while 1: try: data, addr = sock.recvfrom(1024) except socket.error, e: print "error", e hexdata = binascii.hexlify(data) print 'Data = %s' % hexdata