⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectpeer.java

📁 基于jxta的文件共享和聊天系统源代码,下载下来分析吧
💻 JAVA
字号:
/* * Created on 7-set-2005 * *   *//** * @author magowiz * */package p2p_system;import java.io.IOException;import java.util.Enumeration;import net.jxta.discovery.DiscoveryEvent;import net.jxta.discovery.DiscoveryListener;import net.jxta.discovery.DiscoveryService;import net.jxta.document.Advertisement;import net.jxta.id.ID;import net.jxta.peergroup.PeerGroup;import net.jxta.protocol.DiscoveryResponseMsg;import net.jxta.protocol.PeerAdvertisement;public class SelectPeer implements DiscoveryListener {	private ID [] pids ;	private int pidx,idx;	private PeerGroup pg;	private DiscoveryService discoSvc;	private int N;	private PeerAdvertisement padv;			public SelectPeer(PeerGroup p,int n)	{		pg=p;		padv=pg.getPeerAdvertisement();		discoSvc=pg.getDiscoveryService();				discoSvc.addDiscoveryListener(this);		pidx=0;		idx=0;		N=n;		pids=new ID[N];		for (int i=0; i<N;i++)			pids[i]=null;	}			public synchronized void discover ()	{		//System.out.println("Sending a Discovery Message");        // look for any peer        discoSvc.getRemoteAdvertisements(null, DiscoveryService.PEER,                                          null, null, 2*N+1);                            }		public synchronized void reset()	{				for (int i=0; i<N;i++)			pids[i]=null;		pidx=0;		idx=0;			flush();			}		public void flush()	{		try {	        Enumeration en = discoSvc.getLocalAdvertisements(DiscoveryService.PEER, null, null);	        while (en.hasMoreElements()) {	           discoSvc.flushAdvertisement( (Advertisement) en.nextElement());	        }	   } catch (IOException io) {	       io.printStackTrace();	   } 	}		public void republish()	{		Advertisement a;		a=padv;		long lifetime1,lifetime2;		lifetime1=120000;		lifetime2=0;		try {discoSvc.publish(a,lifetime1,lifetime2);}		catch(IOException ioe){System.out.println(ioe.toString());}	}		public boolean enoughPeers()	{		boolean r=false;		if(pidx==N) r=true;		return r;	}		public synchronized void discoveryEvent(DiscoveryEvent ev)	{		DiscoveryResponseMsg res = ev.getResponse();        PeerAdvertisement peerAdv =null;        //PeerGroupAdvertisement pgadv=null;        Enumeration en = res.getAdvertisements();        if (en != null ) {            while (en.hasMoreElements()) {                peerAdv = (PeerAdvertisement) en.nextElement();                                      if ((!(alreadyKnow(peerAdv.getPeerID())))&&(pidx<N))            	{            	 pids[pidx]=peerAdv.getPeerID();            	 pidx++;            	}                  }           }   	}			public synchronized ID getID()	{	 ID id=null;	  		 	if(pids[idx]!=null){id=pids[idx];idx++;}	 	 		 return id;		}			private boolean alreadyKnow(ID i)	{	 boolean r=false;	 for (int j=0;j<N;j++)	 {	 	if((pids[j]!=null)&&(i.equals(pids[j])))	 		{	 		 r=true;	 		 	 		}	 	if((pids[j]!=null)&&(i.equals(pg.getPeerID())))	 		{	 	 		 	 		 r=true;	 		}	 }	 return r;	}	}

⌨️ 快捷键说明

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