




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、福建电脑2006年第7期0.引言近几年来,P2P 文件共享软件如eMule 、OPENEXT 、Thun-der 、Kuro M3、APIA 、iMesh 、BearShare 等深受广大网民的青睐,特别是青少年。这些软件之所以能赢得大家的喜爱,其主要原因就是下载速度快,它们可以让大家在最短的时间内获得自己想要的音乐、影视剧、文件等,同时还可以分享给他人。本文将介绍一种基于JXTA 技术的P2P 文件共享软件的设计与实现。1.P2P 与JXTA 1.1P2PP2P 即Peer to Peer,称为对等连接或对等网络。它打破了传统的Client/Server (C/S或B (Browser /S
2、 (Server 模式,在网络中的每个结点的地位都是对等的。每个结点既是客户机,也是服务器。P2P 具有非中心化、可扩展性、健壮性、高性能/价格比、隐私保护、负载均衡等优点,并被广泛地运用到ICQ 类的即时通信软件、Farsite (Microsoft /Ocean Store 类数据存储软件、Napster 类数据共享软件、Infrasearch 、Pointera 类数据搜索及查询软件、Netbatch (Intel 类协同计算软件、Groove 类数据或行动协同软件、游戏软件等领域的开发与研究。1.2JXTAJXTA 是Sun 公司推出的一个网络编程和计算平台,用以解决现代分布计算尤其是
3、P2P 计算中出现的问题。目前JXTA 首先推出了基于Java 的参考实现,提供了支持六个协议的Java API ,JXTA 还将推出包括C 语言在内的其它编程语言的API 。JXTA 由核心层、服务层和应用层组成,所提供的六个协议是JXTA 核心层的重要组成部分。JXTA 通过这六个协议来支持各类P2P 应用的开发。JXTA 采用了开放源码的方式,由JXTA 社区 推动发展,已经吸引了大量业界人士参与到P2P 和JXTA 技术的研究与应用当中。2.系统功能设计P2P 文件共享系统从功能上分为如下四个部分。(1设置共享内容:将本地客户机的文件或文件夹共享给网
4、络中的其它客户。(2取消共享内容: 取消本地客户机的共享内容。(3搜索:输入所要文件的文件名在网络中进行查找,并将查找结果其显示到文件列表中,供下载。(4下载:从文件列表中选择所需要的文件,将其下载到本地客户机。其系统结构图如1所示。3.系统开发工具与实现环境配置在使用JXTA 进行编程前,首先要先下载并安装一个JXTA 的参考实现。登录网页/builde/release ,下载2003年3月发布的稳定版。该版本包含三个压缩文件:jxta2.0_bin.zip 、jxta2.0_doc.zip 、jxta2.0_src.zip ,它们包含了JXTA
5、 编程所需的主要类库、文档说明和部分源代码。本系统在JBuilder9.0中进行开发,需要在工程中导入JXTA 的相关包,这些包位于jxta2.0_bin.zip 中目录instantp2plib 下。第一次运行JXTA 程序时,JXTA 的自动配置工具会即时显示出来要求对JXTA 运行环境进行配置,主要用来配置JXTA 的网络环境。包括peer 的信息、TCP/IP 和HTTP 的配置、Rendezvous 和Relay peer 以及安全信息,根据向导指南即可进行配置。以后每次运行JXTA 程序都需要输入配置时设定的用户名和密码。4.系统功能实现本系统主要使用JXTA 中的CMS (Con
6、tent Manager Service 来实现。CMS 是一个在点组中的多个点之间共享内容的服务,它使得Peer 可以共享自己的内容以及定位和获取其它Peer 上的内容,它不仅为本地Peer 管理被共享的内容,也能浏览和下载远程Peer 的内容。CMS 主要通过下面三个类完成文件共享、取消文件共享、搜索文件和下载文件功能。!ContentManager 类:共享文件或取消文件共享。!ListContentRequest 类:发送文件搜索请求。!GetContentRequest 类:文件下载。4.1系统用户界面设计在JBuilder9中创建工程file_share.jpx,并为其配置JXTA
7、 开发平台,即将jxta2.0_bin.zip 中目录instantp2plib 下的类库全部添加进来。然后在工程中创建应用程序SimpleFileShare.java ,并使用swing 进行界面布局和设计。设计四个JButton 用来启动搜索、下载、设置共享、取消共享功能,两个Jlist 对象jList1和jList2分别用来显示搜索文件列表和共享文件列表,一个文本框对象jTextFiled ,用来输入搜索字符串。4.2系统初始化4.2.1导入JXTA 平台基本类import net.jxta.exception.*;import net.jxta.peergroup.*;import n
8、et.jxta.share.client.*;import net.jxta.share.*;import net.jxta.share.metadata.*;4.2.2定义类成员变量private PeerGroup netPeerGroup=null;/全局peer 组private CMS cms=null;/内容服务对象ContentAdvertisementresults=null;/存储内容广告数组ListContentRequest request=null;/用于搜索对象DefaultListModel result_listModel=new DefaultListModel
9、(;/搜索结果列表DefaultListModel file_listModel=new DefaultListModel(;/共享结果列表4.2.3启动JXTA 服务定义成员方法startJXTA(来启动JXAT 服务。此处产生一个基于JXTA 的P2P 文件共享软件的设计与实现杨淑萍,聂哲(深圳职业技术学院软件工程系广东深圳518055【摘要】:P2P 网络模型已成为现在的技术热点,JXTA 是sun 公司推出的P2P 应用解决平台。本文所实现基于JXTA 的P2P 文件共享软件,具备了一个P2P 文件共享软件的基本功能,在它基础上可以开发成为一个较复杂的P2P 应用,为P2P 应用的实现
10、提供了基础。【关键词】:P2P ;JXTA ;文件共享;搜索;下载图1文件共享软件系统结构图105福建电脑2006年第7期CMS,并设置监听器。public void startJXTA(try/创建并启动默认的JXTA网络点组netPeerGroup=PeerGroupFactory.newNetPeerGroup(;cms=new CMS(;/创建一个内容管理服务对象cms.init(netPeerGroup,null,null;/在指定的Peer组内初始化CMS 服务cms.addSearchListener(new MySearchListener(;/设置监听器String home
11、dir=System.getProperty("JXTA_HOME"/创建共享目录homedir=(homedir!=null?homedir+"ShareDemo":"ShareDemo"if(cms.startApp(new File(homedir=-1System.out.print("CMS initalization faild"System.exit(-1;catch(PeerGroupException e其中netPeerGroup创建并启动默认的JXTA NetPeerGroup, cms创建的
12、一个内容管理服务对象,cms.startApp(启动CMS服务,接受并处理到达的共享内容请求,并提供一个目录用于存储和缓存内容广告。4.3搜索的实现搜索功能的实现要考虑两个方面,一方面提供本地资源为其它peer搜索,通过搜索监听器类MySearchListener实现。另一方面要发出搜索请求并对搜索到的结果进行处理,这里通过搜索请求类MyListRequest和搜索按钮的事件处理程序来实现,搜索字符串通过一个文本框对象来获取。4.3.1搜索监听器类MySearchListenerMySearchListener类用来监听其它peer对本机资源的搜索,是一个内部类。它实现了接口SearchLis
13、tener,即实现接口中的方法queryReceived(String queryString方法。当某个peer发出的搜索请求到达本机时,会激发queryReceived(String queryString方法去搜索本机的资源。4.3.2搜索请求类MyListRequestMyListRequest类也是一个内部类,它继承ListContentRequest类,并重写类中的notifyMoreRequest(方法,使用时由该类对象发出请求,构造器带入组名和搜索字符串。当搜索结果到达时,类中的notifyMoreRequest(方法被自动调用,并将结果显示在列表jList1的result_l
14、istModel中。类MyListRequest的代码如下:class MyListRequest extends ListContentRequestSimpleFileShare searchWindow=null;public MyListRequest(PeerGroup group,String inSubStr,SimpleFileShare searchWindowsuper(group,inSubStr;this.searchWindow=searchWindow;public void notifyMoreResults(if(searchWindow!=nullsearch
15、Window.updateResults(this.getResults(;getResults(是MyListRequest父类ListContentRequest类中的方法,用来获取ContentAdvertisement形式的搜索结果。方法updateResults(ContentAdvertisementresults用来处理搜索结果并将其显示到一个jList对象的result_listModel中。4.3.3搜索从文本框对象获取搜索字符串searchString,创建一个包含搜索字符串的ListContentRequest对象request,然后调用ListContentReques
16、t的方法activateRequest(向netPeerGroup点组发出搜索请求并等待结果。request=new MyListRequest(netPeerGroup,searchString,this; /创建对象request.activateRequest(;/发出搜索请求并等待结果4.4下载的实现从搜索到的文件列表中选择一个文件将其下载到本地机上。通过文件下载类DownloadFile和下载按钮的事件处理程序来实现。4.4.1文件下载类DownloadFile该类继承GetContentRequest类,并实现接口ActionListener。其主要功能是下载文件,另外该类需要重写
17、父类中的方法notifyDone(、notifyFailure(、notifyUpdate(int percentage,它们分别用来处理下载完成、下载失败和部分下载三种情况。DownloadFile类构造器的主要代码如下:public DownloadFile(JFrame parent,ContentAdvertisement source,File destinationsuper(netPeerGroup,source,destination;dlg=new Dialog(parent,"Downloading"+destination.getAbsoluteFil
18、e(.getName(;4.4.2下载下载按钮的事件处理程序生成一个DownloadFile对象,将选择的文件下载到指定的位置。被下载文件的信息和存放位置由DownloadFile的构造器带入。关键语句如下:new DownloadFile(this,resultsselectedIndex,savePath;其中resultsselectedIndex为选择要下载的文件,savePath为本地Peer保存所下载文件的位置。4.5设置共享与取消共享的实现将本机的文件共享给其它的peer或取消共享,通过CMS的ContentManager类的share(和unshare(方法来实现。下面语句将实现文件file共享,其中file是共享文件的File 对象。cms.getContentManager(.share(file;从共享文件列表中选择要取消共享的文件,通过下面语句将其共享取消。int index=jList2.getSelectedIndex(;cms.getContentManager(.unshare(cms.getContentManager(. getContent(index;其中index是文件在列表中的索引号。5.结束
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备沉降观测管理制度
- 设备设施检查管理制度
- 设计公司人事管理制度
- 设计服饰搭配管理制度
- 评估公司人事管理制度
- 诊所抓药日常管理制度
- 诊所行风建设管理制度
- 试验设施器材管理制度
- 财务部精细化管理制度
- 财政直达资金管理制度
- 2024网站渗透测试报告
- 2024年中国建筑西南勘察设计研究院有限公司招聘笔试参考题库含答案解析
- DG-TJ08-2433A-2023 外墙保温一体化系统应用技术标准(预制混凝土反打保温外墙)
- 教师法制教育培训课件
- 众包物流模式下的资源整合与分配
- 铁路货运流程课件
- 四川省成都市成华区2023-2024学年七年级上学期期末数学试题(含答案)
- 慢性硬膜下血肿护理要点大揭秘
- 管工基础知识培训课件
- 成人气管切开拔管中国专家共识解读
- “微”力量微博营销
评论
0/150
提交评论