知识大全 如何使用JXTA技术建立P2P网络

Posted

篇首语:当生活如同炼狱,必须自己创造阳光。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何使用JXTA技术建立P2P网络相关的知识,希望对你有一定的参考价值。

如何使用JXTA技术建立P2P网络  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  作者 朱传辉

  通过之前将近一个月对于JXTA技术的研究 终于大致了解了P P网络JXTA技术的JAVA语言实现过程 特整理出来 以供大家交流讨论 其实 关于概念和该技术的介绍 也可以找到一些资料 在此我就不再介绍 我直接通过代码来描述一个P P网络在JXTA技术下用JAVA语言实现的过程  第一步 大家需要下载JXTA的类库 在上可以下载到最新版本 我这里提供JXTA 的版本(很抱歉 超过限制上传不了!我会在论坛上另外上传 包括CHM格式的技术手册)  第二步 新建一个JAVA工程 将这些JAR包添加至构建路径(此处是采用Eclipse 用其他IDE 或是直接将这些JAR包添加到CLASSPATH也行)  第三步 我们将开始代码编写了 新建一个类 其main方法及其调用方法代码如下

  

  public static void main(String[] args)  RestoPeer myapp = new RestoPeer();   //此处实例化一个对等体对象  myapp startJxta();                                  //此处启动JXTA方法 用来加入组 获得服务等等  System exit( );                                      //功能至完成 退出系统  public void startJxta()  try          加入默认对等组NetPeerGroup netpg = new NetPeerGroupFactory() getInterface();  catch (PeerGroupException e)     // TODO Auto generated catch block    e printStackTrace();    

   此处需要注意的是 由于JXTA技术的不断更新 其类库结构和实现已发生很大变化 此处加入默认对等组是 版本中的新方法 JXTA技术手册上的方法已过时  第四步 我们需要获得默认对等组为我们提供的发现服务

    DiscoveryService disco = netpggetDiscoveryService();

   此时 我们便可以利用disco服务来查找我们所需的广告了  第五步 我们需要查找一个属于我们自己的对等组 如果找不到 我们则创建一个这样的对等组 此时只是为了得到我们所需要的服务 因为每个对等组里所提供的服务并不全部相同 我们通常会把相同的目的的对等体通过一个对等组来组织起来 一个加入对等组的代码如下 (此例采用JXTA技术手册里的一个餐馆的拍卖服务案例来描述)

  

  // 加入拍卖组 private void joinRestoNet()  int count = ; // 试图发现的最高循环次数 System out println( 试图发现组名为 RestoNet 对等组 ); 从NetPeerGroup获得发现服务 DiscoveryService hdisco = netpg getDiscoveryService(); Enumeration ae = null; // 记录发现的广告  // 循环直到我们发现RestoNet对等组或是直到我们达到了试图预期发现的次数  while (count > )  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 null); // 线程暂停一下等待对等体内该发现请求   try          Thread sleep(timeout);          catch (InterruptedException e)            // TODO Auto generated catch block               e printStackTrace();                          catch (IOException e)             // TODO Auto generated catch block               e printStackTrace();                       /*  *     以上为循环发现目标组过程 以下为加入过程 * */                 // 创建一个对等组通告引用PeerGroupAdvertisement restoNetAdv = null; // 检查我们是否找到RestoNet通告 如果没有找到 表示我们可能是第一个试图加入该组的对等体 //或是其他知道RestoNet组的对等体成员已经关闭或不可到达// 万一出现这种情况 我们必须创建一个RestoNet对等组  if (ae == null || !ae hasMoreElements()) // 如果该组不在 给出提示信息 创建该组 System out println( Could not find the RestoNext peergroup;createing me );try          // 创建一个新的对等组RestoNet 全能对等组         // 通过NetPeerGroup获得一个一般对等组的通告          ModuleImplAdvertisement implAdv = netpg getAllPurposePeerGroupImplAdvertisement();        // 通过NetPeerGroup创建一个新的对等组 JXTA会自行发布该对等组通告         //参数依次为对等组ID 通告 组名 描述        restoNet = netpg newGroup(mkGroupID() implAdv RestoNet RestoNet Inc );        // 获得一个对等组通告        restoNetAdv = netpg getPeerGroupAdvertisement();         catch (Exception e)             // TODO Auto generated catch block            e printStackTrace();         else            // RestoNet通告在缓存内找到意味着我们可以加入这个存在的组            // 在集合中提取一个对等组通告元素           restoNetAdv = (PeerGroupAdvertisement) ae nextElement();try           // 加入该对等组 由于该通告已经发布 JXTA不会再行发布           restoNet = netpg newGroup(restoNetAdv);          System out println( 找到RestoNet对等组 并加入存在的该组 );        catch (PeerGroupException e)           // TODO Auto generated catch block          e printStackTrace();          // 获得RestoNet提供的发现服务和管道服务   disco = restoNet getDiscoveryService();    pipes = restoNet getPipeService();    System out println( RestoNet Restaurant_( + brand + ) is on line );    return;

  此时 我们已经加入或者创建了一个RestoNet对等组了 该组位于NetPerrGroup组内 所以通过NetPeerGroup提供的发现服务可以找到该组广告 如若找不到 则跟网络环境有关 可能是等待时间太短或是循环次数太少 因为P P网络是不可靠的网络 因此这个参数很难确定 需要根据实际情况来设置  至此 我们的机器已处于一个P P网络中了 其实在我们得到默认对等组实例时我们已经在P P网络中了 只不过我们现在已经通过网络发现 找到或创建了我们需要的对等组并加入其中 以后我们便可以提供并消费该对等组提供的服务或是该对等组内对等体提供的服务了  以上为最简单的构建P P网络 加入对等组的简单应用 以后会陆续贴出利用JXTA技术实现普通字符通讯和媒体数据广播等应用 敬请期待!以上所有均为个人实践体会及理解 如若有误 还望不吝赐教进行批评指正 如需交流 请加MSN 源代码下载  日前我发表了一篇关于JXTA技术建立P P网络的文章 得到了广大朋友们的关注和支持 现应朋友们要求 我将一些测试源码上传上来供大家参考讨论 还望大家多提宝贵意见!需要说明的 在src rar中的两个文件需要放到不同的工作目录下方可运行成功 因为JXTA第一次运行时会为每个对等体设置缓存目录 如在同一工作区内后者会将前者信息覆蓋 因此建议用不同工作区最好是两台电脑来测试 在第一次运行时会弹出一个配置窗口 大家只需填写用户名和密码即可 其他设置暂时不须关心 密码必须大于八位 另外三个包为JXTA类库 请大家解压后导入项目中即可

src rar lib rarsrc lib rar lib rar cha138/Article/program/Java/Javascript/201311/25439

相关参考

知识大全 基于JXTA的P2P应用开发

基于JXTA的P2P应用开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PP计算被Intel

知识大全 讲述Jxta的故事(1)

把P2P进行到底:讲述Jxta的故事(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jxt

知识大全 讲述Jxta的故事(2)

把P2P进行到底:讲述Jxta的故事(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Jx

知识大全 设计不受传统网络限制的 P2P 系统

设计不受传统网络限制的P2P系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着移动计算的普

知识大全 对等(P2P)计算实际使用之发展历史回顾

对等(P2P)计算实际使用之发展历史回顾  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对等网络

知识大全 JXTA概念介绍(翻译)

JXTA概念介绍(翻译)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  .JXTA定义  JXT

利用现代信息技术手段建立和发展起来的一种新型组织结构是

利用现代信息技术手段建立和发展起来的一种新型组织结构是_____。A、直线制组织结构B、事业部制组织结构C、网络型组织结构D、矩阵式组织结构答案:C解析:网络型组织结构产生的本质在于现代信息科学技术高

知识大全 p2p网贷平台资管化存在哪些问题

p2p网贷平台资管化存在哪些问题伟嘉安捷“我家贷”解答:一是信用体系不健全,市场环境不完善。二是组织机构存在缺陷,交易机制也有漏洞。三是风险管理简单化,内控机制未建立。四是IT系统不牢靠,信息安全无保

知识大全 JXTA下的媒体数据传输

JXTA下的媒体数据传输  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Sun微系统公司公开了旨

知识大全 JXTA Platform JAVA参考实现源代码分析(2)

JXTAPlatformJAVA参考实现源代码分析(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下