Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import string, time, socket, select, threading, signal, os, email, re
- MAXRECVLEN = 1024 # dimensione del buffer per ricezione da rete """
- LHOST = "192.168.1.53" # IP locale su cui lavorare
- TXTTL = 4 # TTL in trasmissione
- running = 1
- lastid = 0
- d1['ID'] = "1" # ID decoder
- d1['RXMCAST'] = "239.192.0.1" # RX multicast
- d1['RXPORT'] = 1062 # RX UDP port
- d2['ID'] = "2" # ID decoder
- d2['RXMCAST'] = "239.192.0.2" # RX multicast
- d2['RXPORT'] = 1062 # RX UDP port
- """ classe ricevente """
- class receiver(threading.Thread):
- def __init__ (self, ldecoder):
- threading.Thread.__init__(self)
- self.decoder = ldecoder
- self.msg = ''
- # receiver
- self.sr = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
- """ allow multiple sockets to use the same addr and port number """
- self.sr.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- if hasattr(socket, "SO_REUSEPORT"):
- self.sr.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
- def run(self):
- global lastid
- writelog('II: Starting decoder n.' + str(self.decoder['ID']) + ' - ' + str(self.decoder['RXMCAST']) + ':' + str(self.decoder['RXPORT']))
- """ Bind to the port that we know will receive multicast data """
- self.sr.bind(('', self.decoder['RXPORT']))
- self.sr.setblocking(1)
- """ tell the kernel that we want to add ourselves to a multicast group """
- self.sr.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(self.decoder['RXMCAST']) + socket.inet_aton(LHOST))
- while running:
- self.chunk, self.addr = self.sr.recvfrom(MAXRECVLEN)
- if self.chunk == '':
- writelog('EE: error reading from socket')
- raise IOError
- self.msg += self.chunk
- if len(self.msg) == PKTSIZE:
- """
- if
- BLA BLA BLA BLA
- """
- self.msg = ''
- def close(self):
- self.sr.close()
- def main():
- global running
- while 1:
- running = 1
- """ load decoders """
- if len(d2['RXMCAST']) > 5 and d2['RXPORT'] > 1024:
- recv2 = receiver(d2)
- recv2.daemon = True
- recv2.start()
- recv1 = receiver(d1)
- recv1.run()
- """
- except BLABLABLA
- """
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement