Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import argparse
- import socket
- import struct
- import time
- MCAST_PORT = 9999
- MCAST_GROUP = '225.0.0.250'
- MCAST_TTL = 1
- MCAST_IF = None
- def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('-s', '--send', action='store_true', default=False)
- parser.add_argument('-p', '--port', type=int, default=MCAST_PORT)
- parser.add_argument('-g', '--group', type=str, default=MCAST_GROUP)
- parser.add_argument('-t', '--ttl', type=int, default=MCAST_TTL)
- parser.add_argument('-i', '--interface', type=str, default=MCAST_IF)
- args = parser.parse_args()
- if args.send:
- sender(args)
- else:
- receiver(args)
- def sender(args):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- if args.interface is None:
- s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL,
- struct.pack('@i', args.ttl))
- else:
- s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF,
- socket.inet_pton(socket.AF_INET, args.interface))
- while True:
- data = repr(time.time())
- s.sendto(data + '\0', (args.group, args.port))
- time.sleep(1)
- def receiver(args):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- s.bind(('', args.port))
- b = socket.inet_pton(socket.AF_INET, args.group)
- if args.interface is None:
- mreq = b + struct.pack('=I', socket.INADDR_ANY)
- else:
- mreq = b + socket.inet_pton(socket.AF_INET, args.interface)
- s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
- while True:
- data, sender = s.recvfrom(1500)
- while data[-1:] == '\0':
- data = data[:-1]
- print ('from:' + str(sender[0]) +
- ', port:' + str(sender[1]) +
- ', data:' + repr(data))
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment