首页 > 编程知识 正文

(java p2p编程_JXTA-JAVA P2P网络编程技术(入门篇))

时间:2023-05-05 01:09:45 阅读:121192 作者:229

1 .前言

最近,对等(P2P )又成为了网络上的热点。 P2P是互联网的应用模式之一,意味着网络上的任何设备(包括大型机、PC、PDA、手机、机顶盒等)都可以平等直接连接合作。 与目前互联网上主流的应用模式客户端/服务器或客户端/服务相比,P2P具有自己鲜明的特点和优势。 这里也是我着迷的地方。 呵呵……J )

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

有常见的P2P APP应用程序,包括聊天程序、游戏,特别是在线游戏、文件共享、协作和白板。

当然,P2P网络应该具有以下特点:

互操作性(P2P系统很容易找到并连接对方,相互沟通。

平台无关性: P2P系统独立于c、Java等编程语言,独立于Windows、UNIX等系统平台,独立于TCP/IP、蓝牙等网络平台

通用性) P2P系统可以在具有数字处理功能的任何设备上运行。

2 .什么是2.JXTA

首先,JXTA是为构建P2P网络而制定的协议群,是解决构建P2P网络必须解决的问题的方法。 总共有六个协议。 稍后我们会详细讨论这些协议。

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

它由三层组成,如图1-1所示。

图1-1 JXTA分层结构

第1层是JXTA核心层,包含服务所需的核心功能,包括Peer、对等组、Peer发现、Peer通信、Peer监视和相关的安全基元。 第2层是服务层,提供用于访问JXTA协议的接口。 这包括常见功能,如搜索、共享、索引、代码缓存和内容缓存,而P2P网络不需要这些功能。 第3层是APP应用层,它使用服务访问JXTA网络和JXTA提供的功能。 这还包括使用JXTA服务(如myJXTA和JXTA-CAD )开发的完整P2P APP应用程序。

让我简单介绍一下JXTA的概念。

3.JXTA的一些概念

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

对等组—组织对等体并发布组中的特定服务的方法。 可以创建、添加和退出单个组,以更新单个组成员的关系。

Pipe (管道)Peer之间的虚拟信道可以通过防火墙的障碍物进行通信。 这样,Peer就可以在大多数网络上进行通信。

广告描述JXTA消息、Peer、对等组或服务等的XML文档。 为了交换JXTA网络上可用的任何信息,必须符合编码、标记和内容标准。 大多数JXTA的广告代码使用UTF-8。

使用XML格式处理消息(消息)消息; 使用二进制形式。

Rendezvous Peer :能够处理来自其他Peer的请求的Peer。 也可以向其他集合点请求。

路由Peer :支持Peer端点协议的Peer。

网关Peer :作为通信中继的Peer。 与Rendezvous Peer不同,它用于在Peer之间传递消息,而Rendezvous Peer用于传递请求。

说了这么多东西,连我都有点晕了。 呵呵……接下来我们做个例子详细看看吧:

下载并安装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。 单击“确定”。 在以下界面中,输入安全用户名(安全用户名)和密码(Password ),然后在Experienced Users Only页面上输入IP地址和端口。 TCP默认端口为9701,HTTP默认端口为9700,单击按钮。 复选框的意思也一目了然。 当然,也可以单击downloadrelayandrendezvouslists按钮下载可用TCP和HTTP rendezvous列表和网关列表。

如果有防火墙,请确保选择usea relay (要求)

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 .libjxta.jar HelloJXTA.java

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

D:>java –classpath .libjxta.jar; .liblog4j.jar; .libjxtasecurity.jar; .libcryptix-asn1.jar; .libcryptix32.jar; .libbcprov-jdk14.jar;.libjxtaptls.jar;. HelloJXTA

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

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

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

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

运行结果,如图

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里面中去。也将jrelib目录下*.jar添加进去。编译、运行,都是OK的!呵呵……入门就说到这里,下一篇将关于JXTA的一些应用程序。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。