Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. import socket
  2. import thread
  3. import pickle
  4.  
  5. class BMultcast(object):
  6.  
  7. def __init__(self, addres, bind=('localhost', 8089)):
  8. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
  9. sock.bind(bind)
  10.  
  11. self.process = addres
  12. self.socket = sock
  13. self.bind = bind
  14.  
  15. def multcast(self, group, message):
  16. for i, p in enumerate(self.process):
  17. if i in group:
  18. self.socket.sendto(message, p)
  19.  
  20.  
  21. def deliver(self):
  22. data, addr = self.socket.recvfrom(1024)
  23. return data
  24.  
  25.  
  26. class RMultcast(BMultcast):
  27.  
  28. def __init__(self):
  29. self.received = []
  30.  
  31. thread.start_new_thread(self._keep_read)
  32.  
  33. def _keep_read(self):
  34. while True:
  35. data = super(BMultcast, self).deliver():
  36. bind, group, message = pickle.loads(data)
  37. if m not in self.received:
  38. self.received.append(message)
  39. if bind != self.bind:
  40. super(RMultcast, self).multcast(group, message)
  41. deli
  42.  
  43.  
  44.  
  45. def deliver(self):
  46. data, addr = self.socket.recvfrom(1024)
  47. return data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement