Pull to refresh

P2P взаимодействие с помощью TomP2P

Доброго всем времени суток!

Взялся писать P2P приложение на Java с помощью библиотеки P2P. Ознакомился с example-ами, да вот беда: не нашел нигде как «связать» два пира, которые никогда друг о друге не знали. В example-ах есть приводится пример взаимодействия пиров через заранее известный мастерпир. Я же хочу, чтобы пир при старте слал broadcast сообщение и слушал, кто на них ответит. Вследствие у меня возникло много вопросов: Как отправить конкретное сообщение по broadcast (в example-ах это делатся через ping)? Как создать handler входящих сообщений и как послать request в ответ (опять-таки в примерах это делается через ping)?

Те, кто знаком/работал с этой библиотекой или видел толковые примеры на хабре/просторах интернета, отзовитесь.

Пример кода, который выполняет требуемые действия, но через стандартный пинг:

public class Main {
   public static void main(String[] args) throws IOException, InterruptedException {
       PeerMaker peerMaker1, peerMaker2;
       Peer peer1, peer2;
       Bindings b1 = new Bindings( Bindings.Protocol.IPv4, Inet4Address.getByName("192.168.1.191"), 4000, 4000);
       b1.addInterface("eth3");
       Bindings b2 = new Bindings( Bindings.Protocol.IPv4, Inet4Address.getByName("192.168.1.191"), 4001, 4001);
       b2.addInterface("eth3");
       System.out.println("--------------------------------------------------------------------------");
       peerMaker1 = new PeerMaker(new Number160(new Random())).setBindings(b1).setPorts(4000);
       peer1 = peerMaker1.makeAndListen();
       System.out.println("--------------------------------------------------------------------------");
       peerMaker2 = new PeerMaker(new Number160(new Random())).setBindings(b2).setPorts(4001);
       peer2 = peerMaker2.makeAndListen();
       System.out.println("--------------------------------------------------------------------------");
       FutureBootstrap fb = peer1.bootstrap().setBroadcast(true).setPorts(4001).start();
       fb.awaitUninterruptibly();
       peer2.discover().setPeerAddress(fb.getBootstrapTo().iterator().next() ).start().awaitListeners();
       System.out.println("--------------------------------------------------------------------------");
       System.out.println(fb.isSuccess());
       System.out.println(fb.isCompleted());
       peer1.shutdown();
       peer2.shutdown();
   }
}
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.