Доброго всем времени суток!
Взялся писать P2P приложение на Java с помощью библиотеки P2P. Ознакомился с example-ами, да вот беда: не нашел нигде как «связать» два пира, которые никогда друг о друге не знали. В example-ах есть приводится пример взаимодействия пиров через заранее известный мастерпир. Я же хочу, чтобы пир при старте слал broadcast сообщение и слушал, кто на них ответит. Вследствие у меня возникло много вопросов: Как отправить конкретное сообщение по broadcast (в example-ах это делатся через ping)? Как создать handler входящих сообщений и как послать request в ответ (опять-таки в примерах это делается через ping)?
Те, кто знаком/работал с этой библиотекой или видел толковые примеры на хабре/просторах интернета, отзовитесь.
Пример кода, который выполняет требуемые действия, но через стандартный пинг:
Взялся писать 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();
}
}