2015-11-02 1 views
2

В настоящее время я работаю с перекосом в python, и я пытаюсь сделать многоадресную рассылку между несколькими одноранговыми узлами (каждый из них может отправлять и получать сообщения, отправлять файлы и т. Д.). Мой главный выглядит следующим образом:Twisted multiple peers

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() 

Я сохранил этот один простой, потому что я хочу, чтобы понять свою ошибку, поэтому им, используя только 3 peers.I начать первый с serial_process_num 0 из CMD (Py example.py экс 0), то 1 и 2.Am I правильно настроили слушателей/connecttcp? Всякий раз, когда я отправляю сообщения между этими 3, я получаю только половину из них в каждом сверстнике. (Я использую self.transport.write («пример»)

Есть альтернативный способ многоадресной передачи через TCPconnect в витую? (Им следующий krondos учебник), и как я могу сделать несколько соединений между несколькими коллегами с витыми?

+1

Вы можете получить представление об этом: https://github.com/crossbario/autobahn-python/blob/master/examples/twisted/websocket/broadcast/server.py. Полученное сообщение Twisted + Autobahn WebSocket + для всех подключенных аналогов. –

+0

спасибо, я понял это – user1823812

ответ

1

Multicast - это datagram protocol, что означает, что у вас нет потока байтов так же, как с TCP, другими словами, это своего рода UDP. Нет, вы не можете использовать TCP с ним, в Twisted или иначе.

+0

Ну, на самом деле это не мультикаст, но я хочу, чтобы каждый друг связывался друг с другом (через связь между ними). Но я не могу правильно настроить их подключения. – user1823812