http://blog.csdn.net/JoeBaby_/article/details/7875841

1.前言

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

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

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

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

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

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

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

2.JXTA是什么

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

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

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

图1-1  JXTA的层次结构

第一层是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

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

import java.io.InputStream;

import net.jxta.peergroup.PeerGroup;

import net.jxta.peergroup.PeerGroupFactory;

import net.jxta.exception.PeerGroupException;

public class HelloJXTA{

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的目录:

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

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

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

图1-2 JXTA登录界面

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

图1-3 HelloJXTA运行结果

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

P2P-JXTA学习(1)-入门相关推荐

  1. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  2. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  3. [转]学习Objective-C: 入门教材

    学习Objective-C: 入门教材 Objective-C是一种简单的计算机语言,它可以用来设计复杂的面向对象程序. Objective-C扩展了标准ANSI C语言,增加了一些定义类.方法以及其 ...

  4. 150页书籍《PyTorch 深度学习快速入门指南》附PDF电子版

    为什么说是极简教程,首先本书只涵盖了150页.内容比较精简,特别适合作为 PyTorch 深度学习的入门书籍.为什么这么说呢?因为很多时候,一份厚重的书籍往往会削弱我们学习的积极性,在学习一门新的语言 ...

  5. 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

    原文:http://www.techweb.com.cn/news/2017-07-31/2566452.shtml 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目 2017. ...

  6. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  7. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  8. Java学习从入门到精通-旧版

    为什么80%的码农都做不了架构师?>>>    Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...

  9. Vue学习(入门实例、常用指令)-学习笔记

    文章目录 Vue学习(入门实例.常用指令)-学习笔记 实例 常用指令 v-on v-bind v-for v-html v-if event v-model 双向数据绑定实现 - defineProp ...

  10. Vue学习笔记入门篇——数据及DOM

    本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...

最新文章

  1. top命令的笔记补充2--如何将top信息后台运行并写入log
  2. 面试题: 数据库 已看1 视图 游标
  3. 静态资源跨域解决方案
  4. ReviewForJob(2)算法分析
  5. TreeView 小技巧
  6. bootstrap在iframe框架中实现由子页面在顶级页面打开模态框(modal)
  7. centos8安装MySQL依赖_centos8安装mysql8
  8. php中source,PHP中source #N问题的解决方法
  9. 基于Hadoop2.7.3集群数据仓库Hive1.2.2的部署及使用
  10. 搭建MVC及WebAPI项目框架时碰到的问题集合
  11. Error:To install them, you can run: npm install --save vue-style-loader css-loader……
  12. 手把手教你强化学习(十) 基于Stochastic Policy的深度强化学习方法
  13. 委托和事件的一些理解笔记
  14. springmvc源码-调用
  15. android ui设计最新字体,UI设计常用字体规范
  16. 删除了项目下的\WEB-INF\classes文件夹,在eclipse的tomcat部署启动时报错。
  17. android wps页面设置,WPS中设置纸张的方法
  18. Windows映射网络驱动器
  19. CSR是什么样的公司?CSR蓝牙芯片有何过人之处?
  20. chrome18-使用network waterfall分析页面载入性能

热门文章

  1. fa萤火虫算法c语言,优化算法笔记(十)萤火虫算法
  2. 孙鑫老师的j2ee教程—j2ee视频教程
  3. Oracle日期函数
  4. 怎么快速将Excel文件转为DBF格式文件
  5. python黑帽子学习中的疑难-(一)取代netcat
  6. 计算机财务管理中的函数,浅析几种常用的Excel函数在财务管理中的应用
  7. 如何批量修改Word文档Mathtype公式字体
  8. 如何将不清晰的扫描版pdf转为清晰的pdf或word
  9. C语言编程必背单词百度云,c语言编程必背单词-20210403022023.pdf-原创力文档
  10. RDP报表工具:六大优势铸造核心竞争力