Я хотел бы использовать DHT для моего проекта, и у меня возникли проблемы с работой Kademlia example.Почему я не могу установить значение с помощью кода примера Kademlia?
Вот выход журнала из twistd -noy examples/server.tac
:
2015-01-21 18:19:43+0100 [-] Log opened.
2015-01-21 18:19:43+0100 [-] twistd 13.2.0 (/usr/bin/python 2.7.6) starting up.
2015-01-21 18:19:43+0100 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2015-01-21 18:19:43+0100 [-] KademliaProtocol starting on 8468
2015-01-21 18:19:49+0100 [-] 'Did not received reply for msg id YES6sdvjJ3qpg5Pr6pg/ajdeMg8= within 5 seconds'
2015-01-21 18:19:49+0100 [NodeSpiderCrawl] [INFO] creating spider with peers: []
2015-01-21 18:19:49+0100 [NodeSpiderCrawl] [INFO] crawling with nearest:()
2015-01-21 18:19:49+0100 [NodeSpiderCrawl] [INFO] last iteration same as current - checking all in list now
2015-01-21 18:19:53+0100 [Server] [WARNING] No known neighbors, so not writing to cache.
А вот выход клиентского сценария находится в ссылке выше:
2015-01-21 18:22:09+0100 [-] Log opened.
2015-01-21 18:22:09+0100 [-] KademliaProtocol starting on 5678
2015-01-21 18:22:14+0100 [-] 'Did not received reply for msg id SpQjdpv2Qos+C7q0BB1XzNgya4A= within 5 seconds'
2015-01-21 18:22:14+0100 [NodeSpiderCrawl] [INFO] creating spider with peers: []
2015-01-21 18:22:14+0100 [NodeSpiderCrawl] [INFO] crawling with nearest:()
2015-01-21 18:22:14+0100 [NodeSpiderCrawl] [INFO] last iteration same as current - checking all in list now
2015-01-21 18:22:14+0100 [-] Found nodes: []
2015-01-21 18:22:14+0100 [Server] [DEBUG] setting 'a key' = 'a value' on network
2015-01-21 18:22:14+0100 [Server] [WARNING] There are no known neighbors to set key a key
2015-01-21 18:22:14+0100 [Server] [WARNING] There are no known neighbors to get key a key
2015-01-21 18:22:14+0100 [-] Key result: None
2015-01-21 18:22:14+0100 [KademliaProtocol (UDP)] (UDP Port 5678 Closed)
2015-01-21 18:22:14+0100 [-] Main loop terminated.
Что происходит? Я понимаю, что одноранговая сеть нуждается в сети для подключения, но разве это не то, что должен делать автономный сервер?
Заранее благодарен!
различия клиент/сервер, на самом деле не существует в сети p2p. так, вы сообщили узлу 2, как связаться с узлом 1? И ваши файлы журналов не показывают временного перекрытия, если они не работают одновременно, они не могут разговаривать друг с другом. – the8472
@ the8472, Документы Kademlia относятся к одному из двух сценариев как к «автономному серверу», который я также считал немного странным. Оба узла были, по сути, одновременно запущены и запущены. Я не совсем уверен, что нужно сделать, чтобы «сообщить узлу 2, как связаться с узлом 1». Не следует ли указывать одноранговую сеть на порт ip: port? – blz
«Не следует указывать одноранговый порт ip: port?». Это должно быть, но сообщения журнала, похоже, указывают на то, что узлам не с кем поговорить. – the8472