📄 ping.java
字号:
package net.jxta.impl.shell.bin.ping;import net.jxta.impl.shell.*;import java.io.*;import java.util.*;import net.jxta.exception.*;import net.jxta.discovery.*;import net.jxta.endpoint.*;import net.jxta.pipe.*;import net.jxta.peergroup.*;import net.jxta.document.*;import net.jxta.id.*;import net.jxta.protocol.*;import java.util.*;/** * The ping command class. This class essentially takes the input and coordinates * the execution of PingPeer. */public class ping extends ShellApp implements PingListener, PingReplyListener { private DiscoveryService discovery=null; private ShellEnv env = null; private static final int WaitingTime = 2000; private static final int MAXRETRIES = 5; static ping pinger; PingPeer pingPeer; public ping() { pinger = this; } public static void println2(String str) { pinger.println(str); } public void stopApp() { } public int startApp(String[] args) { try { env = getEnv(); discovery= group.getDiscoveryService(); //flushAds(); pingPeer = new PingPeer(discovery,group,env); // Notify me when certain events happen so I can respond // in my own way pingPeer.addPingReplyListener(this); pingPeer.addPingListener(this); if(args.length == 1 && "-listen".equals(args[0])) pingPeer.listen(); else if(args.length == 1 && "-propagate".equals(args[0])) { println("Send propagate ping request..."); pingPeer.propagate(); } else if(args.length>0) { List list = (List)Arrays.asList(args); pingPeers(list); } else { help(); } return 0; } catch (PingException e) { return 1; } } /** * This method takes the list of peers provided on command line * looks up their corresponding unicast ping pipes, and pings them. */ private void pingPeers(List names) { Iterator it = names.iterator(); while(it.hasNext()) { String name = (String)it.next(); println("Sending ping request to "+name+" ..."); try { pingPeer.ping(name); } catch (PingException pe) { println("ping exception: "+name); } } } /** * Flush current cache of advertisements. */ private void flushAds() { try { discovery.flushAdvertisements(null,DiscoveryService.ADV); } catch (IOException e) { } } /** * Callback invoked when a ping reply message * is received. * @param event The PingReplyEvent * @see PingReplyEvent * @see PingReplyHandler */ public void pingReply(PingReplyEvent event) { long pdiff = event.getPriorDifferential(); // returns the first leg duration long diff = event.getDifferential(); // returns the second leg duration long tstamp = event.getTimestamp(); // returns time event was received long ostamp = event.getOriginTimestamp(); // returns time event was dispatched String pname = event.getPeerName(); println(""); // display reply data. println(pname+": "+pdiff+"ms "+diff+"ms "); } /** * Callback invoked when a ping event occurs * @param event The PingEvent */ public void pingEvent(PingEvent event) { println(""); println("Pinged by "+event.getPeerName()+"...."); } public String getDescription() { return "Send a ping request to another peer and receive a response if it is alive."; } public void help() { println("NAME"); println(" ping - Send a ping request to another peer and receive a response if it is alive."); println(" "); println("SYNOPSIS"); println(" "); println(" ping [-listen] [-propagate] <peername>"); println(" "); println("DESCRIPTION"); println(" "); println("'ping' is a command that can be used to determine if remote"); println("peers that are listening for pings are 'alive'."); println("Ping will recieve ping responses asynchronously and the times"); println("involved in the ping messages are recoreded and displayed."); println(" "); println("EXAMPLE"); println(" "); println(" JXTA> ping -listen"); println(" JXTA> ping"); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -