Package net.tomp2p.examples

Source Code of net.tomp2p.examples.ExampleDiscover

package net.tomp2p.examples;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.Collection;
import java.util.Random;

import net.tomp2p.connection.Bindings;
import net.tomp2p.connection.ChannelCreator;
import net.tomp2p.connection.DefaultConnectionConfiguration;
import net.tomp2p.connection.DiscoverNetworks;
import net.tomp2p.connection.StandardProtocolFamily;
import net.tomp2p.futures.FutureBootstrap;
import net.tomp2p.futures.FutureChannelCreator;
import net.tomp2p.futures.FutureDiscover;
import net.tomp2p.futures.FutureResponse;
import net.tomp2p.p2p.Peer;
import net.tomp2p.p2p.PeerBuilder;
import net.tomp2p.peers.Number160;
import net.tomp2p.peers.PeerAddress;

public class ExampleDiscover {

  public static void main(String[] args) throws Exception {
    if (args.length > 0) {
      startClient(args[0]);
    } else {
      startServer();
    }
  }

  public static void startServer() throws Exception {
    Random rnd = new Random(43L);
    Bindings b = new Bindings().addProtocol(StandardProtocolFamily.INET).addAddress(
            InetAddress.getByName("127.0.0.1"));
    // b.addInterface("eth0");
    Peer master = new PeerBuilder(new Number160(rnd)).ports(4000).bindings(b).start();
    System.out.println("Server started Listening to: " + DiscoverNetworks.discoverInterfaces(b));
    System.out.println("address visible to outside is " + master.peerAddress());
    while (true) {
      for (PeerAddress pa : master.peerBean().peerMap().all()) {
        System.out.println("PeerAddress: " + pa);
        FutureChannelCreator fcc = master.connectionBean().reservation().create(1, 1);
        fcc.awaitUninterruptibly();

        ChannelCreator cc = fcc.channelCreator();

        FutureResponse fr1 = master.pingRPC().pingTCP(pa, cc, new DefaultConnectionConfiguration());
        fr1.awaitUninterruptibly();

        if (fr1.isSuccess()) {
          System.out.println("peer online T:" + pa);
        } else {
          System.out.println("offline " + pa);
        }

        FutureResponse fr2 = master.pingRPC().pingUDP(pa, cc, new DefaultConnectionConfiguration());
        fr2.awaitUninterruptibly();

        cc.shutdown();

        if (fr2.isSuccess()) {
          System.out.println("peer online U:" + pa);
        } else {
          System.out.println("offline " + pa);
        }
      }
      Thread.sleep(1500);
    }
  }

  public static void startClient(String ipAddress) throws Exception {
    Random rnd = new Random();
    Bindings b = new Bindings().addProtocol(StandardProtocolFamily.INET).addAddress(
            InetAddress.getByName("127.0.0.1"));
    // b.addInterface("eth0");
    Peer client = new PeerBuilder(new Number160(rnd)).ports(4001).bindings(b).start();
    System.out.println("Client started and Listening to: " + DiscoverNetworks.discoverInterfaces(b));
    System.out.println("address visible to outside is " + client.peerAddress());

    InetAddress address = Inet4Address.getByName(ipAddress);
    int masterPort = 4000;
    PeerAddress pa = new PeerAddress(Number160.ZERO, address, masterPort, masterPort);

    System.out.println("PeerAddress: " + pa);
   
    // Future Discover
    FutureDiscover futureDiscover = client.discover().inetAddress(address).ports(masterPort).start();
    futureDiscover.awaitUninterruptibly();

    // Future Bootstrap - slave
    FutureBootstrap futureBootstrap = client.bootstrap().inetAddress(address).ports(masterPort).start();
    futureBootstrap.awaitUninterruptibly();

    Collection<PeerAddress> addressList = client.peerBean().peerMap().all();
    System.out.println(addressList.size());

    if (futureDiscover.isSuccess()) {
      System.out.println("found that my outside address is " + futureDiscover.peerAddress());
    } else {
      System.out.println("failed " + futureDiscover.failedReason());
    }
    client.shutdown();
  }

}
TOP

Related Classes of net.tomp2p.examples.ExampleDiscover

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.