在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信息,因为对等组不存在。
分享到:
相关推荐
1. **JXTA 概念**:首先,理解JXTA的核心概念至关重要,包括对等节点(Peers)、边缘网络(Edge Network)、对等组(Peer Groups)、管道(Pipes)和服务(Services)。每个概念都是构成P2P网络的基础。 2. **JXTA ...
内容在JXTA中被定义为任何需要共享的数据,每份共享内容通过其二进制代码产生的128位MD5校验值作为唯一标识,这不仅便于确认多个文件内容的一致性,还用于检索内容,帮助寻找距离请求Peer最近的目标Peer,从而提高...
1. **JXTA架构**:JXTA的体系结构基于几个关键组件,包括广告(Advertisements)用于发布资源信息,管道(Pipes)作为通信通道,以及对等组(Peer Groups)来组织网络中的节点。理解这些概念对于有效地使用JXTA至关...
3. **对等组与管道**:在JXTA中,对等组(Pipes)是连接多个对等体的通道,用于传输数据和服务。对等组可以根据需要动态创建,支持点对点或多点通信,确保信息的有效传递。 4. **用户模块**:该模块负责用户的身份...
1. **对等组(Peer Group)**: JXTA Messenger运行在特定的对等组中,对等组定义了网络的逻辑边界,拥有共同的属性和规则。 2. **身份管理(Identity Management)**: 每个JXTA节点都有一个唯一的身份,用于认证和...
在该研究中,首先对peer节点的连接设计成一个JXTASocket包,以封装所有对等点通信。该包内包含多个方法,比如绑定输入管道并执行监听的bind()方法,发送和接收信息的run()方法,绑定输出管道并建立通信连接的connect...
- **概念**:深入探讨JXTA中的关键概念,如对等节点、组、广告等。 - **协议**:详细介绍JXTA所采用的一系列协议,包括Peer Discovery Protocol、Peer Resolver Protocol等,并分析这些协议的作用和实现细节。 - **...
JXTA(Java eXtensible Peer-to-Peer Technology Platform)是Oracle公司开发的一个开源、跨平台的P2P(Peer-to-Peer)框架,它为构建基于对等网络的应用程序提供了一组标准协议和API。JXTA 2.7是这个框架的一个版本...
通过使用"jxta.jar",开发者可以轻松地在应用程序中集成P2P功能,如创建和加入网络、发布和查找资源、建立通信管道等。 其次,"cms.jar"可能指的是CMS(Cryptographic Message Syntax),这是一个用于加密和签名...
**JXTA(Java XTREME Protocol Architecture)**是一个开源的、基于 peer-to-peer (P2P) 技术的框架,由Sun Microsystems在2001年推出。它的目标是提供一种允许分布式应用程序在互联网上进行通信和协作的平台。JXTA...
在命令行中,用户可以输入各种命令进行操作,如`peer start`来启动一个对等节点,`service find`来查找网络上的特定服务,或者`pipe info`来获取管道的详细信息。 **JXTA技术基础** 理解JXTA Shell前,需要了解...
描述中的"JXTA开发p2p的经典实例HelloWorld"进一步确认了这一点,表明这个压缩包可能包含了一个基于JXTA(Java eXtensible Networking Technology Architecture)平台实现的P2P(peer-to-peer)通信的“HelloWorld”...
在JXTA中,对等方之间可以共享资源、交换数据和服务,而无需中心控制服务器。 **P2P网络编程**是一种去中心化的网络架构,其中每个参与者都拥有平等的地位,可以提供或消费网络中的资源。与传统的客户端-服务器模型...
**JXTA(JavaXTM Peer-to-Peer Toolkit)** 是一个开源项目,由Sun Microsystems在2001年推出,旨在提供一种基于P2P(peer-to-peer)技术的框架和服务,允许开发者构建分布式、自组织的应用程序。JXTA 2.4.1b是该...
JXTA(Java Extensible Peer-to-Peer Technology Platform)是由Sun Microsystems开发的一种开放源代码的P2P(peer-to-peer)平台技术。JXTA API是这个平台的核心,它为开发者提供了一组接口和类,使得构建分布式、...
**JXTA(Java Xtreme Protocol)是一种开放源代码的对等网络(Peer-to-Peer, P2P)平台框架,由Sun Microsystems开发。它的核心是构建在分布式系统之上的,旨在提供一种灵活且可扩展的方式,使得网络中的节点可以直接...
1. **对等发现(Peer Discovery)**: JXTA提供了一种机制,使得对等体能够在网络中找到彼此,而无需中心服务器。 2. **服务发现(Service Discovery)**: 对等体可以搜索并发现网络上提供的服务,这有助于构建动态...
3. **代码实现**:在项目中创建一个新的Java类,用于初始化JXTA对等体(peer)并启动JXTA。以下是一个基本示例: ```java public static void main(String[] args) { RestoPeer myapp = new RestoPeer(); myapp....
JXTA(JavaXTended)是Sun Microsystems公司开发的一种基于对等网络(P2P,Peer-to-Peer)的开放协议框架,它允许不同设备间的对等节点进行通信和协作。这个名为“HelloJxta.rar”的压缩包,包含了对JXTA技术的基本...
- **查询机制**:允许Peer搜索特定资源或服务的方式。 **2.4 协议层** - **Peer Discovery Protocol(Peer发现协议)**: 用于发现新Peer。 - **Peer Information Protocol(Peer信息协议)**: 交换Peer的信息。 - ...