当前位置:编程学习 > JSP >>

JXTA——JAVA P2P网络编程技术(入门篇)


1.前言

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

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

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

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

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

     平台无关性:P2P系统应该设计成独立于编程语言如CJAVA等,独立于系统平台如WindowsUNIX,独立于网络平台如TCP/IPBLUETOOTH

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

2JXTA是什么

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

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

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

1-1  JXTA的层次结构

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

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

3JXTA的一些概念

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

       软件地址:JXTA.org/">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默认端口为9701HTTP默认端口为9700,并点击“+”按钮。复选框的意思也就一目了然了。当然你也可以点击Download relay and rendezvous lists按钮来下载一些可供使用的TCPHTTP rendezvous列表,以及网关列表。

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

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

5Hello 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

补充:Jsp教程,Java基础
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,