Search code examples
pythontcptwistedmulticast

Twisted multiple peers


I'm currently working with twisted in python and I'm trying to make a multicast between many peers(each of them can send and receive messages, send acks etc). My main looks like this :

if __name__ == '__main__':
    serial_process_num, address = parse_args()

    if serial_process_num == '0':
        factory = PeerFactory('0', 'log')
        reactor.listenTCP(address[1], factory)
        reactor.listenTCP(address[1]+1, factory)

        print "Process 0 is listening @" + address[0] + " port " + str(address[1])
        print "Process 0 is listening @" + address[0] + " port " + str(address[1]+1)
    elif serial_process_num == '1':
        factory = PeerFactory('1', '')
        host, port = address
        print "Connecting to process 0 " + host + " port " + str(port)
        reactor.connectTCP(host, port, factory)
        print "Process 1 is listening @" + address[0] + " port " + str(address[1]+2)
        reactor.listenTCP(port+2, factory)
    else:
        factory = PeerFactory('2', '')
        host, port = address
        print "Connecting to process 0 " + host + " port " + str(port+1)
        reactor.connectTCP(host, port+1, factory)
        print "Connecting to process 1 " + host + " port " + str(port+2)
        reactor.connectTCP(host, port+2, factory)


    reactor.run()

I kept this one simple because I want to understand my mistake, so im using only 3 peers.I start the first one with serial_process_num 0 from the cmd (ex py example.py 0), then the 1 and 2.Am I setting up the listeners/connecttcp correctly? Whenever I send messages between those 3, I only receive half of them in every peer. (i use self.transport.write('example')

Is there an alternative way to multicast through TCPconnect in twisted?(im following krondos tutorial) and how can I make multiple connections between multiple peers with twisted?


Solution

  • Multicast is a datagram protocol, which means that you do not have a stream of bytes in the same way that you do with TCP; in other words, it's a kind of UDP. So no, you cannot use TCP with it, in Twisted or otherwise.