jxtapdptest.txt

来自「JXTA协议中对等点发现协议实现,抄的 自己不太懂还是个学生呵呵」· 文本 代码 · 共 67 行

TXT
67
字号
import java.util.Enumeration;
import net.jxta.discovery.*;
import net.jxta.exception.*;
import net.jxta.peergroup.*;
import net.jxta.protocol.*;

public class DiscoveryDemo implements Runnable,DiscoveryListener{
    static PeerGroup netPeerGroup=null;
    private DiscoveryService discovery;
    //start to configure JXTA plat
    private void startJxta(){
         try{
              netPeerGroup=PeerGroupFactory.newNetPeerGroup();
         }catch(PeerGroupException e){
            //if fail to creat the group,put out the error and terminate the programme
            System.out.println("Fatal error:group creation failure");
            e.printStackTrace();
            System.exit(1);
    }
    //pick out the Service from Peer Group
    discovery =netPeerGroup.getDiscoveryService();
    }
    //the thread is reapted once every minite until peers are discovered and the result is put out
    public void run(){
        try{
           //add DiscoveryListener for DiscoveryResponse events
           discovery.addDiscoveryListener(this);
           while(true){
              System.out.println("Sending a Discovery Message");
              //look for peers ,every peer is allowed to have 5 response
              discovery.getRemoteAdvertisements(null,DiscoveryService.PEER,null,null,5);
              try{
                 Thread.sleep(60*1000);
              }catch(Exception e){}
            }
         }catch(Exception e){
            e.printStackTrace();
         }
     }
     //to realize DiscoveryListener,wo must define the function to resolve the response message
     public void discoveryEvent(DiscoveryEvent ev){
         DiscoveryResponseMsg res=ev.getResponse();
         String name="unknown";
         //get the response adv from Peers
         PeerAdvertisement peerAdv=res.getPeerAdvertisement();
         //some Peers can't response their PeerAdvertisement
         if(peerAdv!=null){
             name=peerAdv.getName();
         }
         System.out.println("Got a Discovery Response["+re.getResponseCount()+"elements]frome peer:"+name);
         //put out the dicovered Peer
         PeerAdvertisement adv=null;
         Enumeration enum=res.getAdvertisement();
         if(enum!=null){
           while(enum.hasMoreElements()){
              adv=(PeerAdvertisement)enum.nextElement();
              System.out.println("Peer name="+adv.getName());
           }
         }
     }
     static public void main(String args[]){
         DiscoveryDemo myapp=new DiscoveryDemo();
         myapp.startJxta();
         myapp.run();
     }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?