如何使用JXT技术建立P2P网络.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何使用JXT技术建立P2P网络

?如何使用JXTA技术建立P2P网络 通过之前将近一个月对于JXTA技术的研究,终于大致了解了P2P网络JXTA技术的JAVA语言实现过程,特整理出来,以供大家交流讨论。其实,关于概念和该技术的介绍,也可以找到一些资料,在此我就不再介绍,我直接通过代码来描述一个P2P网络在JXTA技术下用JAVA语言实现的过程。  第一步,大家需要下载JXTA的类库,在上可以下载到最新版本。我这里提供JXTA2.4.1的版本(很抱歉,超过限制上传不了!我会在论坛上另外上传,包括CHM格式的技术手册)。  第二步,新建一个JAVA工程,将这些JAR包添加至构建路径(此处是采用Eclipse,用其他IDE,或是直接将这些JAR包添加到CLASSPATH也行)。  第三步,我们将开始代码编写了。新建一个类。其main方法及其调用方法代码如下: ?public static void main(String[] args) { ?RestoPeer myapp = new RestoPeer();?? //此处实例化一个对等体对象。 ?myapp.startJxta();??????????????????????????????????//此处启动JXTA方法,用来加入组,获得服务等等。 ?System.exit(0);??????????????????????????????????????//功能至完成,退出系统。 ?} public void startJxta() { ?try { ?????????加入默认对等组NetPeerGroup ?netpg = new NetPeerGroupFactory().getInterface(); ?} catch (PeerGroupException e) { ????// TODO Auto-generated catch block ????e.printStackTrace(); } ??...... ?}  此处需要注意的是,由于JXTA技术的不断更新,其类库结构和实现已发生很大变化,此处加入默认对等组是2.4.1版本中的新方法。JXTA技术手册上的方法已过时。  第四步,我们需要获得默认对等组为我们提供的发现服务: ?DiscoveryService disco = netpggetDiscoveryService();  此时,我们便可以利用disco服务来查找我们所需的广告了。  第五步,我们需要查找一个属于我们自己的对等组,如果找不到,我们则创建一个这样的对等组。此时只是为了得到我们所需要的服务。因为每个对等组里所提供的服务并不全部相同。我们通常会把相同的目的的对等体通过一个对等组来组织起来。一个加入对等组的代码如下:(此例采用JXTA技术手册里的一个餐馆的拍卖服务案例来描述) ?// 加入拍卖组 ?private void joinRestoNet() { ?int count = 3; // 试图发现的最高循环次数 ?System.out.println( 试图发现组名为 RestoNet 对等组); ?从NetPeerGroup获得发现服务 ?DiscoveryService hdisco = netpg.getDiscoveryService(); ?Enumeration ae = null; // 记录发现的广告。 ?// 循环直到我们发现RestoNet对等组或是直到我们达到了试图预期发现的次数。 ?while (count-- 0) { ?try { ?// 第一次搜索对等体的本地缓存来查找RestoNet对等组通告。 // 通过NetPeerGroup组提供的发现服务发现Name属性为RestoNet的对等组 ?ae = hdisco.getLocalAdvertisements(DiscoveryService.GROUP,Name, RestoNet); // 如果发现RestoNet对等组通告,该方法完成,退出循环。 ?if ((ae != null) ae.hasMoreElements()) { ???????break; ?????} // 如果我们没有在本地找到它,便发送发现远程请求。 ?// 参数依次为要查找的对等体ID,为空时不以此为发现条件;发现的通告类型,取值还有PEER,和ADV; ?// 要发现的通告属性名称;属性取值;需获取的最大通告数量;发现监听器 ??hdisco.getRemoteAdvertisements(null, DiscoveryService.GROUP,Name, RestoNet, 1, null); ?// 线程暂停一下等待对等体內该发现请求。 ??try { ????????

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档