1.前言

最近,P2P(Peer-to-Peer)又成为了因特网上的一个热点。P2P是因特网的一种应用模式,其意思是指网络上的任何设备(包括大型机、PC机、PDA、手机、机顶盒等等)都可以平等地直接进行连接并进行协作。想比当前因特网上主流的应用模式Client/Server或者Client/Service而言,P2P具有自己鲜明的特点和优势。(这也是我对它着迷的地方。呵呵……J)

有了P2P技术,因特网不需要一个大型的服务器,这对于有些行业(尤其是网络游戏)来说,是非常“幸运”的!因为P2P技术都很方便的实现你只化很少的money就可以达到你想要的效果。(是不是心动了?呵呵……J)

一些常见的P2P应用程序:聊天程序,游戏(尤其网络游戏),文件共享,协同工作和白板。

当然,P2P网络也应具备的下列特点:

①互操作性:P2P系统很容易的找到并连接对方,彼此进行交流。

②平台无关性:P2P系统应该设计成独立于C,Java等,独立于系统平台如Windows和UNIX,独立于网络平台如TCP/IP和BLUETOOTH。

③广泛性:P2P系统可以运行在任何有数字处理功能的设备上。

2.JXTA是什么

首先,JXTA是为了构建P2P网络而制订的一组协议,是解决构建P2P网络必须要解决的问题的方法。共有六个协议(关于这些协议后面会详细的谈的)。

其次,JXTA是P2P应用程序开发的运行平台。目前,JXTA首先推出了基于Java的参考实现的。

它三层组成:如图1-1所示:

图1-1JXTA的层次结构

第一层是JXTA核心层,它包含了服务所必需要的核心功能,包括Peer、对等组、Peer发现、Peer通信、Peer监视和相关的安全原语;第二层是服务层,它提供了访问JXTA协议的接口,包括对于P2P网络不是必需的,但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制;第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能,包括了应用JXTA服务开发出来得完整的P2P应用程序,如myJXTA,JXTA-CAD等应用程序。

下面简略的介绍一下JXTA的一些概念吧:

3.JXTA的一些概念

Peer(对等机):一个虚拟的通信点。一个用户可以有多个Peer,一台计算机或设备上同样可以有多个Peer。

Peer Group(对等组):一种组织Peer并且发布组内的特定服务的方式。可被创建、加入、退出;在一个组里可以更新一个组成员的关系。

Pipe(管道):Peer之间的虚拟通道,可以透过防火墙的障碍进行通信。从而使得Peer在大多数网络情况下都可以通信。

Advertisement(广告):一个XML文档,用来描述JXTA的消息、Peer、对等组或者服务等。它必须遵守编码、标签和内容的标准,用来交换JXTA网络上可以获得的任何信息。大多数JXTA的广告编码是使用UTF-8。

Message(消息):有两种方式来处理消息:①使用XML格式;②使用二进制格式。

Rendezvous Peer(集合点):一个能够处理来自其他Peer请求的Peer。也可以将请求委托给其他集合点。

Router Peer(路由Peer):一个支持Peer端点协议的Peer。

Gateway Peer(网关Peer):一个作为通信中继的Peer。与Rendezvous Peer不同的是,它是用来在Peer间传递消息,而Rendezvous Peer是用来传递请求的。

好了说了这么多的东西,连我都有点晕了。J呵呵……下面开始做一个例子来熟悉一下吧:

4.下载并安装JXTA

软件地址:,请下载最新稳定版本。我下载的是2003-12-15更新的稳定版。它提供了几种平台,根据你的操作系统选择你需要的JXTA。当然你也可以把它的源代码都可以下载下来,帮助你了解JXTA是如何工作的,不过要想编译这些代码,你还得使用Apache Ant工具,可以在下载。还有一个要注意的是你还得安装JDK1.3.1或更高的版本,推荐JDK1.4版本。

下面讲一下配置:

第一次运行JXTA程序时,JXTA将自动显示配置工具。在Basic settings页面里,填上一个你认为很酷的名字,表示你的Peer Name。点击OK。下一个界面输入安全用户名(Secure Username)和密码(Password),然后在Experienced Users Only页面里填上你的IP地址和端口,TCP默认端口为9701,HTTP默认端口为9700,并点击“+”按钮。复选框的意思也就一目了然了。当然你也可以点击Download relay and rendezvous lists按钮来下载一些可供使用的TCP和HTTP rendezvous列表,以及网关列表。

如果你有防火墙一定要选择Use a relay(Required if behind firewall/NAT)复选框。

恭喜,你现在就可以感受和体验JXTA程序了。J

5.Hello JXTA的简单程序

程序源代码:

//HelloJXTA.java

importjava.io.InputStream;

importnet.jxta.peergroup.PeerGroup;

importnet.jxta.peergroup.PeerGroupFactory;

importnet.jxta.exception.PeerGroupException;

public classHelloJXTA {

public static void main(String args[]) {

System.out.println("Starting JXTA....");

HelloJXTA myapp = new HelloJXTA();

myapp.startJXTA();

System.exit(0);

}

public void startJXTA(){

PeerGroup pg = null;

try{

pg = PeerGroupFactory.newNetPeerGroup();

}catch(PeerGroupException e) {

System.out.println("Fatal error:group creation failure");

e.printStackTrace();

System.exit(1);

}

System.out.println("Hello JXTA!:)");

System.out.println("Group name = "+pg.getPeerGroupName());

System.out.println("Group ID = "+pg.getPeerGroupID().toString());

System.out.println("Peer name = "+pg.getPeerName());

System.out.println("Peer ID = "+pg.getPeerID().toString());

System.out.println("Peer BaseClass = "+pg.refTcpProtoSpecID.getBaseClass());

}

}

但要注意的是,此程序在编译时,要用到jxta.jar文件,因此我们这样来编译程序:

D:>javac –classpath ./lib/jxta.jar HelloJXTA.java

这还不算复杂了,运行时候就有点复杂了:

D:>java–classpath ./lib/jxta.jar; ./lib/log4j.jar; ./lib/jxtasecurity.jar; ./lib/cryptix-asn1.jar; ./lib/cryptix32.jar; ./lib/bcprov-jdk14.jar;./lib/jxtaptls.jar;. HelloJXTA

第一次运行程序的时候,会自动出现JXTA平台的配置界面(以后只会出现登录界面,如图1-2所示,注意:登录的是Secure Username,而不是Peer Name),和上面的配置一样。同时,你还可以发现当前的目录下多了个.jxta的目录:

lPlatformConfig文件:由JXTA的配置工具生成,是一个符合XML规范的文本文件。如果你删除它,下次运行HelloJXTA文件时候会出现JXTA平台配置界面。

lCm目录:本地的缓冲目录,记录了发现的所有的PeerGroup的信息。在本例中,应该发现jxta-NetGroup和jxta-WorldGroup两个目录。

lPse目录:存放Peer用于安全认证的证书信息。

图1-2 JXTA登录界面

运行结果,如图1-3所示:

图1-3 HelloJXTA运行结果

当然你可以把上面的命令写成.bat文件也是可以的,但也可以把上面的包都加入到classpath的环境变量中去。如果你还是觉得有点麻烦的话,那就选择一个编译器。比如JCreator Pro 2.0(我只有2.0没用2.5J)。Configure—> Options—> JDK Profiles—> Edit,在Classes页面里Add Package。将lib目录下的*.jar都添加到Classes里面中去。也将jre/lib/目录下*.jar添加进去。编译、运行,都是OK的!呵呵……入门就说到这里,下一篇将关于JXTA的一些应用程序。J

java jxta_JXTA——JAVA P2P网络编程技术(入门篇) | 学步园相关推荐

  1. 网络技术概念与Java网络编程技术——最通俗的理解(转载)

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  2. java运用网络编程技术代码_Java 网络编程

    java网络编程 1.什么叫计算机网络? 由不同地理位置的不同计算机主机,连接起来组成的网络. 2.什么叫网络编程? 在网络的基础上,使用网络进行编程,对应用层进行设计的活动. 3.网络编程三要素:I ...

  3. Java编程那些事儿102——网络编程技术1

    Java编程那些事儿102--网络编程技术1 陈跃峰 出自:http://blog.csdn.net/mailbomb 13.2 网络编程技术 前面介绍了网络编程的相关基础知识,初步建立了网络编程的概 ...

  4. java消息头,Java网络编程从入门到精通:HTTP消息头字段

    Java网络编程从入门到精通:HTTP消息头字段 一.通用头字段 1. Connection 这个字段只在HTTP1.1协议中存在.它决定了客户端和服务器进行了一次会话后, 服务器是否立即关闭网络连接 ...

  5. Java编程那些事儿103——网络编程技术2

    Java编程那些事儿103--网络编程技术2 陈跃峰 出自:http://blog.csdn.net/mailbomb 13.2.3 TCP编程 按照前面的介绍,网络通讯的方式有TCP和UDP两种,其 ...

  6. Java编程那些事儿104——网络编程技术3

    Java编程那些事儿104--网络编程技术3 陈跃峰 出自:http://blog.csdn.net/mailbomb 为了一步一步的掌握网络编程,下面再研究网络编程中的两个基本问题,通过解决这两个问 ...

  7. Java语言进阶:网络编程入门

    Java语言进阶:网络编程 网络编程入门 C/S C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. 特点: 客户端和服务器是分开的,需要下载客户 ...

  8. Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 为了帮助初级开发者快速掌握高并发.网络编程.微服务.海量数据的处理这些实用技术,本文以"理论+范例"的形式对各个知识点进行了详细的讲解,力争让读者在实践中快速掌握相关知识. ...

  9. 阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 有人调侃我们说: 程序员不如送外卖.送外卖是搬运食物,自己是搬运代码,都不产出新的东西-- 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险-- 想跳槽,但是更高的平台难进,同 ...

  10. java毕业设计——基于java+Jsoup+HttpClient的网络爬虫技术的网络新闻分析系统设计与实现(毕业论文+程序源码)——网络新闻分析系统

    基于java+Jsoup+HttpClient的网络爬虫技术的网络新闻分析系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Jsoup+HttpClient的网络爬虫技术的网络 ...

最新文章

  1. JBPM流程部署校验之java利用XSD校验XML
  2. NYOJ 608 畅通工程 并查集
  3. python request post 数组_[pve][python]用python3获取pve状态信息
  4. 爱奇艺视频播放怎么开加速
  5. docker mysql 日志_在docker mysql容器中启用日志记录
  6. 1085. Perfect Sequence (25)-PAT甲级真题
  7. vmlinuz的产生
  8. 基于SIFT特征提取的图像拼接算法matlab仿真
  9. 阿里又起社交心,天天动听做音乐轻社交?
  10. matlab怎么画两个自变量的图_横道图怎么画?免费使用的项目管理软件
  11. 怎么从零开始自己做网站?
  12. Springboot Vue个人简历网站系统java项目源码
  13. 大数据的周边技术-这个解释很通俗
  14. mysql误删了数据_MySQL误删数据
  15. HTML学习笔记及案例(第四周 第1次)
  16. AndroidStudio升级后,离线更新Gradle版本失败问题解决
  17. C++设计模式之状态模式(state)(行为型)
  18. 【大数据之Linux】
  19. 网站SEO优化做好能抵几个销售?看看杭州石炭纪怎么用网站来干了销售的活!
  20. 全局最优和局部最优 世俗理解以及原理解释

热门文章

  1. img android 刷机工具,使用fastboot工具刷入recovery.img、boot.img、system.img等
  2. 蔡高厅高等数学18-函数在一点处的连续、函数在区间内的连续、两类间断点的判断
  3. Oracle JDE系统日常维护和巡检
  4. 北京理工大学计算机学院2021拟录取名单,北京理工大学管理与经济学院2021年硕士研究生拟录取通知...
  5. 中国电网计算机面试题目,国家电网面试经验
  6. 王招治计算机财务管理,计算机财务管理——以Excel为分析工具
  7. STEP7 及模拟器,录像软件的使用
  8. 全新UI聚合支付系统四方系统源码+升级修复漏洞完美版
  9. java四方支付系统
  10. ubuntu 安装log4cpp