public class Edge_Quinisela_At_The_Other_End implements PipeMsgListener { public static final String Name = "Edge Quinisela, at the other end"; public static final int TcpPort = 9725; public static final PeerID PID = IDFactory.newPeerID(PeerGroupID.defaultNetPeerGroupID, Name.getBytes()); public static final File ConfigurationFile = new File("." + System.getProperty("file.separator") + Name); public void pipeMsgEvent(PipeMsgEvent PME) { // We received a message Message ReceivedMessage = PME.getMessage(); String TheText = ReceivedMessage.getMessageElement("DummyNameSpace", "HelloElement").toString(); // Notifying the user Tools.PopInformationMessage(Name, "Received message:\n\n" + TheText); } public static void main(String[] args) { try { // Removing any existing configuration? Tools.CheckForExistingConfigurationDeletion(Name, ConfigurationFile); // Creation of network manager NetworkManager MyNetworkManager = new NetworkManager(NetworkManager.ConfigMode.EDGE, Name, ConfigurationFile.toURI()); // Retrieving the network configurator NetworkConfigurator MyNetworkConfigurator = MyNetworkManager.getConfigurator(); // Checking if RendezVous_Adelaide_At_One_End should be a seed MyNetworkConfigurator.clearRendezvousSeeds(); String TheSeed = "tcp://" + InetAddress.getLocalHost().getHostAddress() + ":" + RendezVous_Adelaide_At_One_End.TcpPort; Tools.CheckForRendezVousSeedAddition(Name, TheSeed, MyNetworkConfigurator); // Setting Configuration MyNetworkConfigurator.setTcpPort(TcpPort); MyNetworkConfigurator.setTcpEnabled(true); MyNetworkConfigurator.setTcpIncoming(true); MyNetworkConfigurator.setTcpOutgoing(true); // Setting the Peer ID Tools.PopInformationMessage(Name, "Setting the peer ID to :\n\n" + PID.toString()); MyNetworkConfigurator.setPeerID(PID); // Starting the JXTA network Tools.PopInformationMessage( Name, "Start the JXTA network and to wait for a rendezvous connection with\n" + RendezVous_Adelaide_At_One_End.Name + " for maximum 2 minutes"); PeerGroup NetPeerGroup = MyNetworkManager.startNetwork(); // Disabling any rendezvous autostart NetPeerGroup.getRendezVousService().setAutoStart(false); if (MyNetworkManager.waitForRendezvousConnection(120000)) { Tools.popConnectedRendezvous(NetPeerGroup.getRendezVousService(), Name); } else { Tools.PopInformationMessage(Name, "Did not connect to a rendezvous"); } // Preparing the listener and Creating the BiDiPipe PipeMsgListener MyListener = new Edge_Quinisela_At_The_Other_End(); JxtaBiDiPipe MyBiDiPipe = new JxtaBiDiPipe( NetPeerGroup, RendezVous_Adelaide_At_One_End.GetPipeAdvertisement(), 30000, MyListener); if (MyBiDiPipe.isBound()) { Tools.PopInformationMessage(Name, "Bidirectional pipe created!"); // Sending a hello message !!! Message MyMessage = new Message(); StringMessageElement MyStringMessageElement = new StringMessageElement("HelloElement", "Hello from " + Name, null); MyMessage.addMessageElement("DummyNameSpace", MyStringMessageElement); MyBiDiPipe.sendMessage(MyMessage); // Sleeping for 10 seconds Tools.GoToSleep(10000); // Sending a goodbye message !!! MyMessage = new Message(); MyStringMessageElement = new StringMessageElement("HelloElement", "Goodbye from " + Name, null); MyMessage.addMessageElement("DummyNameSpace", MyStringMessageElement); MyBiDiPipe.sendMessage(MyMessage); // Sleeping for 10 seconds Tools.GoToSleep(10000); } // Closing the bidipipe MyBiDiPipe.close(); // Stopping the network Tools.PopInformationMessage(Name, "Stop the JXTA network"); MyNetworkManager.stopNetwork(); } catch (IOException Ex) { // Raised when access to local file and directories caused an error Tools.PopErrorMessage(Name, Ex.toString()); } catch (PeerGroupException Ex) { // Raised when the net peer group could not be created Tools.PopErrorMessage(Name, Ex.toString()); } } }
/** Simple RELAY peer. */ public class Relay_Robert { // Static public static final String Name_RELAY = "RELAY"; public static final PeerID PID_RELAY = IDFactory.newPeerID(PeerGroupID.defaultNetPeerGroupID, Name_RELAY.getBytes()); public static final int HttpPort_RELAY = 9900; public static final int TcpPort_RELAY = 9715; public static final File ConfigurationFile_RELAY = new File("." + System.getProperty("file.separator") + Name_RELAY); /** @param args the command line arguments */ public static void main(String[] args) { try { // Removing any existing configuration? NetworkManager.RecursiveDelete(ConfigurationFile_RELAY); // Creation of the network manager final NetworkManager MyNetworkManager = new NetworkManager( NetworkManager.ConfigMode.RELAY, Name_RELAY, ConfigurationFile_RELAY.toURI()); // Retrieving the network configurator NetworkConfigurator MyNetworkConfigurator = MyNetworkManager.getConfigurator(); // Setting Configuration MyNetworkConfigurator.setUseMulticast(false); MyNetworkConfigurator.setTcpPort(TcpPort_RELAY); MyNetworkConfigurator.setTcpEnabled(true); MyNetworkConfigurator.setTcpIncoming(true); MyNetworkConfigurator.setTcpOutgoing(true); MyNetworkConfigurator.setHttpPort(HttpPort_RELAY); MyNetworkConfigurator.setHttpEnabled(true); MyNetworkConfigurator.setHttpIncoming(true); MyNetworkConfigurator.setHttpOutgoing(true); // Setting the Peer ID MyNetworkConfigurator.setPeerID(PID_RELAY); // Starting the JXTA network PeerGroup NetPeerGroup = MyNetworkManager.startNetwork(); // Starting the connectivity monitor new ConnectivityMonitor(NetPeerGroup); // Stopping the network asynchronously ConnectivityMonitor.TheExecutor.schedule( new DelayedJxtaNetworkStopper(MyNetworkManager, "Click to stop " + Name_RELAY, "Stop"), 0, TimeUnit.SECONDS); } catch (IOException Ex) { System.err.println(Ex.toString()); } catch (PeerGroupException Ex) { System.err.println(Ex.toString()); } } }