在JXTA中发布和发现任何资源都是根据广告,因此,我们要发现Peer也却是发现PeerAdvertisement的过程。该如何发现一个对等组内所有的Peer,和打印出它们的信息呢?
首先,我们要搜索Peer,那我们必须要找到一下存在的PeerGroup,找到PeerGroup,我们再找到其下面的Peer。如何发现PeerGroup,我们可以回头看看
如何从HelloWorld开始学习JXTA,在这里我就不详细说明。下面直接用代码和文字结合来讲明如何打印出HelloWorld对等组下面的所有Peer的信息。示例代码如下:
public class FindAllPeer {
/**
* @param args
*/
private PeerGroup helloWorld = null;//目标PeerGroup
private PeerGroup netpg = null;//NetGroup
private PeerGroupAdvertisement pgAdv = null;//对等组广告
private DiscoveryService hdisco = null;//发现服务
public FindAllPeer(){
try {
netpg = new NetPeerGroupFactory().getInterface();//得到当前目录Home下的NetGroup
hdisco= netpg.getDiscoveryService();//获得NetGroup提供的发现服务
} catch (PeerGroupException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//HelloWorld.findPeerGroup功能块,是在上篇HelloWorld.java类中提供的
pgAdv = (PeerGroupAdvertisement)HelloWorld.findPeerGroup(hdisco, "Name", "HelloWorld").nextElement();//找到HelloWorld对等组广告
System.out.println("HelloWorld对待组 ID : "+pgAdv.getPeerGroupID());
try {
helloWorld = netpg.newGroup(pgAdv);//找到目标对等组(HelloWorld对等组)
} catch (PeerGroupException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//
Enumeration enu = null;//发现Peer广告
int index = 0;
StructuredTextDocument doc = null;
StringWriter out = new StringWriter();
try {
//通过helloWorld组提供的发现服务发现"Name"属性为""的对等机
enu = helloWorld.getDiscoveryService().getLocalAdvertisements(DiscoveryService.PEER,"Name","");//搜索HelloWorld对等组下面所有Peer信息
System.out.println("目前HelloWorld PeerGroup下存在以下peer:");
while((enu != null) && enu.hasMoreElements()){
PeerAdvertisement adv = (PeerAdvertisement)enu.nextElement();//得到对等机广告
doc = (StructuredTextDocument)adv.getDocument(MimeMediaType.XMLUTF8);//以XML格式得到PeerAdvertisement
index++;
System.out.println("Peer "+index+" ID : "+adv.getID());//打印PeerID
System.out.println("Peer "+index+" Name : "+adv.getName());//打印PeerName
System.out.println("Peer"+index+"'s PeerAdvertisement: ");//打印该Peer的广告信息
doc.sendToWriter(out);
System.out.println(out.toString());
out.close();
}
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
public static void main(String[] args) {
FindAllPeer pes = new FindAllPeer();
System.exit(-1);
}
}
在运行这段代码之前,最好保证运行过前篇HelloWorld.java,在不如果不存在对等组,可能会出现异常,而且打印不出Peer信息,因为对等组不存在。
分享到:
相关推荐
P2P优秀论文_一个建立在JXTA平台上的对等网络游戏框架的设计
Peer-to-Peer 网络毫无疑问是当今的热点技术主题。Napster 和 Gnutella 的广泛使用证明了 peer-to-peer 应用...本论文设计探讨了 P2P 网络的结构和 JXTA 的基本知识,并利用 JXTA 开发出一个组内聊天和共享文件的软件。
较为深入地分析了基于JXTA架构的对等网络关键技术,着重对JXTA虚拟网络、JXTA资源的发布、发现机制等核心问题进行了探讨,指出了目前JXTA RPV(Rendezvous Peer View)查询策略在效率上存在的不足,并针对这些不足提出...
jxta运行环境所需要的所有jar包 /files/JXTA_Demo/lib/jxta.jar /files/JXTA_Demo/lib/beepcore.jar /files/JXTA_Demo/lib/cryptix-asn1.jar /files/JXTA_Demo/lib/cryptix32.jar /files/JXTA_Demo/lib/jxtaptls.jar...
资源名称:JXTA-Java P2P网络编程技术内容简介:JXTA是美国Sun公司在Java领域里推出的新技术,目的是为P2P(Peer-to-Peer)的网络应用开发提供一个统一的平台。而且为了鼓励和支持该技术的发展,JXTA项目采用了开放...
jxta.jar p2p jxta.jar p2p jxta.jar p2p
JXTA使可共同使用的P2P应用程序拥有了许多能力,其中包括:在能简单地穿过防火墙通讯的不同设备的用户间建立对等组,在网络上找对等体的能力——甚至穿过防火墙,简化文件共享,自动侦测到新的网站目录,对对等体的...
本书是一本介绍JXTA的书籍。主要内容包括:JXTA简介、JXTAShell使用说明、开发JXTA应用程序实例、JXTA管道及安全等。
3)广告以及发现资源(在JXTA网络中,资源包括了很多含义:peers,管道,groups等) 4)相互通信 5)检测对方 利用JXTA,可以容易实现以下几个方面的互操作p2p程序 1)相互发现peers,不管peers是在防火墙还是NATs...
JXTA目前的版本已经是2.5了,同以前的2.0、2.1之类的差别非常大,因此网络上2002年以前的文章,除了是阐述JXTA技术的概念类的文章可以学习外,具体开发类的就没有多大价值。 现将2.0版本和2.5版本同时上传,供大家...
Mastering JXTA 书中的源代码,可以学习如何使用JXTA编程。对初学者很有帮助。
Symbian平台JXTA对等网络协议的研究与实现.pdf
jxta2.2 开发文档
JXTA\jxta-lib-2.4.1.zip 用来开发p2p应用程序的。
jxta的一些经典程序
JXTA 2.7,P2P分布式计算框架JXTA。version 2.7。shell 2.5.
精通JXTA 本书是一本介绍JXTA的书籍。主要内容包括:JXTA简介、JXTAShell使用说明、开发JXTA应用程序实例、JXTA管道及安全等。
JXTA CMS搜索技术的研究JXTA CMS搜索技术的研究JXTA CMS搜索技术的研究JXTA CMS搜索技术的研究
对等网jxta协议方面的描述,对学习jxta很有帮助,对等网络中如何描述对等节点,以及作用