Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import socket
- import struct
- import sys
- from threading import Thread
- MADDX = '225.100.100.100'
- PORT = 6543
- is_listening = False
- def listen_messages(is_listening):
- print('Start listening...')
- sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- sock.bind(('', PORT))
- mreq = struct.pack('4sl', socket.inet_aton(MADDX), socket.INADDR_ANY)
- sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
- sock.settimeout(1)
- while is_listening():
- try:
- print(sock.recv(10240))
- except socket.timeout:
- pass
- print('Stop listening...')
- sys.stdout.write('Enter your name: ')
- name = sys.stdin.readline().strip()
- listening_thread = Thread(target = listen_messages, args = (lambda: is_listening,))
- is_listening = True
- listening_thread.start()
- sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
- sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
- while True:
- try:
- line = sys.stdin.readline().strip()
- sock.sendto('%s: %s' % (name, line), (MADDX, PORT))
- except KeyboardInterrupt:
- is_listening = False
- listening_thread.join()
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement