package net.tomp2p.examples; import net.tomp2p.dht.FutureSend; import net.tomp2p.dht.PeerDHT; import net.tomp2p.p2p.RequestP2PConfiguration; import net.tomp2p.peers.Number160; import net.tomp2p.peers.PeerAddress; import net.tomp2p.rpc.ObjectDataReply; public class ExampleSend { public static void main(String[] args) throws Exception { PeerDHT master = null; try { PeerDHT[] peers = ExampleUtils.createAndAttachPeersDHT(100, 4001); ExampleUtils.bootstrap(peers); master = peers[0]; setupReplyHandler(peers); System.err.println(" ---- query 3 - ~6 close peers -----"); exampleSendRedundant(peers[34]); System.err.println(" ---- now we want to query only the closest one -----"); exampleSendOne(peers[14]); Thread.sleep(60000); } catch (Exception e) { e.printStackTrace(); } finally { master.shutdown(); } } private static void exampleSendOne(PeerDHT peer) { RequestP2PConfiguration requestP2PConfiguration = new RequestP2PConfiguration(1, 10, 0); FutureSend futureSend = peer.send(Number160.createHash("key")).object("hello") .requestP2PConfiguration(requestP2PConfiguration).start(); futureSend.awaitUninterruptibly(); for (Object object : futureSend.rawDirectData2().values()) { System.err.println("got:" + object); } } private static void exampleSendRedundant(PeerDHT peer) { FutureSend futureSend = peer.send(Number160.createHash("key")).object("hello").start(); futureSend.awaitUninterruptibly(); for (Object object : futureSend.rawDirectData2().values()) { System.err.println("got:" + object); } } private static void setupReplyHandler(PeerDHT[] peers) { for (final PeerDHT peer : peers) { peer.peer().objectDataReply(new ObjectDataReply() { @Override public Object reply(PeerAddress sender, Object request) throws Exception { System.err.println("I'm " + peer.peerID() + " and I just got the message [" + request + "] from " + sender.peerId()); return "world"; } }); } } }