本文主要从代码来讲解从HelloWorld开始理解和学习JXTA。在这里我们要实现的是一个Peer如何发现对等组并加入,如果不存在,则创建。当然在这里的加入对等组是最简单的,没有加入任何认证。这样是不安全和不利于对PeerGroup管理的。不过我们在这里只是要了解一下Peer的加入对等组的过程。在这里我用到的是JXTA版本是2.4.1。
public class HelloWorld {
private PeerGroup netgroup = null;
private Enumeration ae = null; // 记录发现的对等体广告。
public static void main(String[] args) {
HelloWorld myapp = new HelloWorld();
myapp.startJxta();
System.exit(0);
}
public void startJxta() {
try {
netgroup = new NetPeerGroupFactory().getInterface();
} catch (PeerGroupException e) {
e.printStackTrace();
}
// 从NetPeerGroup获得发现服务
DiscoveryService hdisco = netgroup.getDiscoveryService();
ae = findPeerGroup(hdisco, "Name", "HelloWorld");
if (ae != null && ae.hasMoreElements()) {
System.out.println("找到HelloWorld对等组");
joinPeerGroup(netgroup, (PeerGroupAdvertisement) ae.nextElement());//找到目标对等组,加入
System.out.println("加入HelloWorld对等组成功!!!");
} else {
System.out.println("没有找到HelloWorld对等组,则创建,在创建中......");
createNewPeerGroup(netgroup, "HelloWorld", "HelloWorld,Inc");//没有找到目标对等组,创建
System.out.println("创建HelloWorld对等组成功!!!");
}
System.exit(-1);
}
private Enumeration findPeerGroup(DiscoveryService dis, String key,
String name) {
int count = 3; // 试图发现的最高次数
int timeout = 3000;
Enumeration advs = null;
// 循环直到我们发现helloWorld对等组或是直到我们达到了试图预期发现的次数。
while (count-- > 0) {
try {
// 第一次搜索对等体的本地缓存来查找helloWorld对等组通告。
// 通过NetPeerGroup组提供的发现服务发现"Name"属性为"helloWorld"的对等组
advs = dis.getLocalAdvertisements(DiscoveryService.GROUP, key,
name);
// 如果发现helloWorld对等组通告,该方法完成,退出循环。
if ((advs != null) && advs.hasMoreElements()) {
break;
}
// 如果我们没有在本地找到它,便发送发现远程请求。
// 参数依次为要查找的对等体ID,为空时不以此为发现条件;发现的通告类型,取值还有PEER,和ADV;
// 要发现的通告属性名称;属性取值;需获取的最大通告数量;发现监听器
dis.getRemoteAdvertisements(null, DiscoveryService.GROUP, key,
name, 1, null);
// 线程延时一下等待对等体內该发现请求。
try {
Thread.sleep(timeout);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return advs;
}
// 如果不存在目标对等组,则创建目标对等组
private PeerGroup createNewPeerGroup(PeerGroup netpg, String name,
String desc) {
PeerGroup result = null;
try {
// 创建一个新的对等组helloWorld
// 通过NetPeerGroup获得一个一般对等组的通告。
ModuleImplAdvertisement implAdv = netpg
.getAllPurposePeerGroupImplAdvertisement();
// 通过NetPeerGroup创建一个新的对等组,JXTA会自行发布该对等组通告,
// 参数依次为对等组ID,通告,组名,描述
result = netpg.newGroup(IDFactory.newPeerGroupID(), implAdv, name,
desc);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 加入对等组
private PeerGroup joinPeerGroup(PeerGroup netpg,
PeerGroupAdvertisement pgAdv) {
PeerGroup result = null;
try {
// 加入该对等组,由于该通告已经发布,JXTA不会再行发布。
result = netpg.newGroup(pgAdv);
} catch (PeerGroupException e) {
e.printStackTrace();
}
return result;
}
}
当我们第1次运行时,会跳出出配置UI,我们在这里只要输入PeerName和Password,再点击OK,就可以啦。
运行代码,我们可能发现,只是在后台看到一些重要的过程的输入,到底有没有加入,Peer,PeerGroup的信息也没有。会有点不爽,不过在这里我要讲的这个过程。没有打印出Peer和PeerGroup的信息。因为发现资源,我们会用到DiscoveryService,后续会慢慢给出这些代码。
分享到:
相关推荐
JXTA的 HelloWorld程序,教你如何初次学习JXTA
new jxta implementation docs
JXTA开发p2p的经典实例HelloWorld
17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265 18.1.1 JMS API 265 18.1.2 点对点消息模式 266 18.1.3 发布者/订阅者模式 267 18.1.4 同步和...
电脑温度检测软件, 夏天的时候可以用用,不用安装那么多的臃肿软件
本旅游网站系统采用的数据库是MYSQL,使用JSP技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。本旅游网站系统采用的数据库是MYSQL,使用JSP技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。本旅游网站系统采用的数据库是MYSQL,使用JSP技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。本旅游网站系统采用的数据库是MYSQL,使用JSP技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。本旅游网站系统采用的数据库是MYSQL,使用JSP技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。本旅游网站系统采用的数据库是MYSQL,使用JSP技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性
BTT0.mdl.z..._lan
C#调用adb传输和推送数据到安卓设备上
有
file_16847..._lan.zip
matlab 从气象数据共享服务网下载的日气象数据中提取所需要的站点数据
个人电脑信息管理,输入数据,输入文档名称、位置等,增删改查,自己处理;电脑东西很多的话可以使用;一个可执行文件和一个数据库文件;如果报错不能运行则需要安装Acess数据库引擎;可以录入文档名,可执行文件名,文件夹和子文件夹名;按类别、格式、名称、位置等查询; 整理你的电脑和U盘吧;
c语言连接两个字符串
Gnostice PDF Toolkit Pro Plus 5.0.0.402.7z
2022213854 李沐窈.zip
内附详细图文教程和视频教程 亲测可用
1.DBeaver是一款通用数据库工具,专为开发人员和数据库管理员设计。 2.DBeaver支持多种数据库系统,包括但不限于MySQL、PostgreSQL、Oracle、DB2、MSSQL、Sybase、Mimer、HSQLDB、Derby、SQLite等,几乎涵盖了市场上所有的主流数据库。 3.支持的操作系统:包括Windows(2000/XP/2003/Vista/7/10/11)、Linux、Mac OS、Solaris、AIX、HPUX等。 4.主要特性: 数据库管理:支持数据库元数据浏览、元数据编辑(包括表、列、键、索引等)、SQL语句和脚本的执行、数据导入导出等。 用户界面:提供图形界面来查看数据库结构、执行SQL查询和脚本、浏览和导出数据,以及处理BLOB/CLOB数据等。用户界面设计简洁明了,易于使用。 高级功能:除了基本的数据库管理功能外,DBeaver还提供了一些高级功能,如数据库版本控制(可与Git、SVN等版本控制系统集成)、数据分析和可视化工具(如图表、统计信息和数据报告)、SQL代码自动补全等。
Android手机安全卫士源码Android项目实战——手机安全卫士开发案例解析.zip
【作品名称】:2024美国大学生数学建模竞赛-基于 python 实现财产保险的可持续性 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:2024美国大学生数学建模竞赛-基于 python实现财产保险的可持续性
Python爬虫实战+数据分析+数据可视化,高分项目本项目是一套成熟的大作业项目系统,获取98分,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。 Python爬虫实战+数据分析+数据可视化,高分项目本项目是一套成熟的大作业项目系统,获取98分,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。 Python爬虫实战+数据分析+数据可视化,高分项目本项目是一套成熟的大作业项目系统,获取98分,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。 Python爬虫实战+数据分析+数据可视化,高分项目本项目是一套成熟的大作业项目系统,获取98分,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。 Python爬虫实战+数据分析+数据可视化,高分项目本项目是一套成熟的大作业项目系统,获取98分,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。