当前位置:首页 > 全部子站 > IT > 思科认证

如何使用JXTA技术建立P2P网络

来源:长理培训发布时间:2017-12-23 14:46:26

 通过之前将近一个月对于JXTA技术的研究,终于大致了解了P2P网络JXTA技术的JAVA语言实现过程,特整理出来,以供大家交流讨论。其实,关于概念和该技术的介绍,也可以找到一些资料,在此我就不再介绍,我直接通过代码来描述一个P2P网络在JXTA技术下用JAVA语言实现的过程。

  第一步,大家需要下载JXTA的类库,在http://www.jxta.org上可以下载到最新版本。我这里提供JXTA2.4.1的版本(很抱歉,超过限制上传不了!我会在上另外上传,包括CHM格式的技术手册)。

  第二步,新建一个JAVA工程,将这些JAR包添加至构建路径(此处是采用Eclipse,用其他IDE,或是直接将这些JAR包添加到CLASSPATH也行)。

  第三步,我们将开始代码编写了。新建一个类。其main方法及其调用方法代码

 

 

 public static void main(String args) {
 myapp.startJxta();                //此处启动JXTA方法,用来加入组,获得服务等等。
 }
 try {
 netpg = new NetPeerGroupFactory().getInterface();
  // TODO Auto-generated catch block
}
 }

  此处需要注意的是,由于JXTA技术的不断更新,其类库结构和实现已发生很大变化,此处加入默认对等组是2.4.1版本中的新方法。JXTA技术手册上的方法已过时。

  第四步,我们需要获得默认对等组为我们提供的发现服务

 

 DiscoveryService disco = netpggetDiscoveryService();

  此时,我们便可以利用disco服务来查找我们所需的广告了。

 

 // 加入拍卖组
 int count = 3; // 试图发现的最高循环次数

 从NetPeerGroup获得发现服务

 Enumeration ae = null; // 记录发现的广告。

 // 循环直到我们发现RestoNet对等组或是直到我们达到了试图预期发现的次数。
0) {
 // 第一次搜索对等体的本地缓存来查找RestoNet对等组通告。
 ae = hdisco.getLocalAdvertisements(DiscoveryService.GROUP,"Name", "RestoNet");

// 如果发现RestoNet对等组通告,该方法完成,退出循环。
    break;

// 如果我们没有在本地找到它,便发送发现远程请求。
 // 要发现的通告属性名称;属性取值;需获取的最大通告数量;发现监听器

 // 线程暂停一下等待对等体內该发现请求。
    Thread.sleep(timeout);
      // TODO Auto-generated catch block
       }
      // TODO Auto-generated catch block
       }

 /*-------------------------------------------
 * ----------------------------------------*/
 // 创建一个对等组通告引用

 // 检查我们是否找到RestoNet通告。如果没有找到,表示我们可能是第一个试图加入该组的对等体,
// 万一出现这种情况,我们必须创建一个RestoNet对等组。

// 如果该组不在,给出提示信息,创建该组
try {
    // 通过NetPeerGroup获得一个一般对等组的通告。

    // 通过NetPeerGroup创建一个新的对等组,JXTA会自行发布该对等组通告,
    restoNet = netpg.newGroup(mkGroupID(), implAdv, "RestoNet","RestoNet,Inc.");

    // 获得一个对等组通告
    } catch (Exception e) {
      e.printStackTrace();
} else {
      // 在集合中提取一个对等组通告元素
try {
     restoNet = netpg.newGroup(restoNetAdv);
    } catch (PeerGroupException e) {
     e.printStackTrace();
}

  // 获得RestoNet提供的发现服务和管道服务
  pipes = restoNet.getPipeService();

  System.out.println("RestoNet Restaurant_(" + brand + ") is on-line");
}

 

  此时,我们已经加入或者创建了一个RestoNet对等组了,该组位于NetPerrGroup组内,所以通过NetPeerGroup提供的发现服务可以找到该组广告。如若找不到,则跟网络环境有关,可能是等待时间太短或是循环次数太少,因为P2P网络是不可靠的网络,因此这个参数很难确定,需要根据实际情况来设置。
  
  至此,我们的机器已处于一个P2P网络中了,其实在我们得到默认对等组实例时我们已经在P2P网络中了,只不过我们现在已经通过网络发现,找到或创建了我们需要的对等组并加入其中,以后我们便可以提供并消费该对等组提供的服务或是该对等组内对等体提供的服务了。

  以上为最简单的构建P2P网络,加入对等组的简单应用,以后会陆续贴出利用JXTA技术实现普通字符通讯和媒体数据广播等应用。敬请期待!以上所有均为个人实践体会及理解,如若有误,还望不吝赐教进行批评指正,如需交流,请加MSN:setve007@hotmail.com

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部