- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于JXTA平台的P2P应用实例的设计与实现
摘要:SUN公司所推出的JXTA解决了P2P网络互不相连的弊端,其目的就是为了搭建一个与系统无关、与语言无关、可以应用在任何设备的P2P开发平台。该文设计并实现了一个基于JXTA平台的能够实现即时通信和文件共享功能的P2P应用程序。
关键词:P2P;JXTA;即使通信;文件共享
中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)13-3362-02
1 JXTA简介
JXTA是SUN公司所为了解决P2P网络互不相连的弊端而推出的,其目的就是为了搭建一个与系统无关、与语言无关、可以应用在任何设备的P2P开发平台。
JXTA由三层组成,如图1所示。第一层是JXTA核心层,它包含了服务所需要的核心功能;第二层是服务层,它提供了访问JXTA协议的接口;第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能。这样的设计和一个标准的操作系统比较相似,标准的操作系统包括核心操作系统、服务和应用程序。
下面,我用一个实例来阐明如何在JXTA的平台开发出P2P应用程序,本程序要实现的功能是即时聊天和文件共享。
2 开发环境
本程序的开发工具是JBuilder 2005,JDK 1.4版本,JXTA包是JAVA实现的1.0版本。
3 系统实现
由于JXTA的Pipe的通信连接过程都是一样的,为了避免重复开发,我开发了一个P2PSocket包来进行节点之间的连接。
P2PSocket包中包含以下方法:
public boolean bind( ) Peer与InputPipe绑定,开始监听。
public void run( ) 负责定时发送与InputPipe绑定的消息。
public boolean connect( )Peer与OnputPipe绑定,建立通信连接。
public boolean send ( ) 通过OnputPipe发送消息。
public void setOutListener( )设定OnputPipe的监听器。
public void setInListener( )设定InputPipe的监听器。
private void newPeerGroup( ) 加入默认的组。
3.1 聊天信息的接收和发送
在这个程序中聊天消息产生和发送主要运用了newChatMessage()方法,
Public Message newChatMessage(String message,String outputPipe,StringinputPipe){
MessageImpl msg=new MessageImpl();
msg.setString(this.CHAT,message);
msg.setString(this.OP,outputPipe);
msg.setString(this.IP,inputPipe);
return msg; }
3.2 文件传输主要程序实现
3.2.1 捕获共享本地文件列表的请求后发送本地共享列表
public void doFileListRequest(MessageImpl mi){
System.out.println(捕获一个本地共享文件列表的请求!);
pps.send(bm.newFileMessage(this.listFile(),pps.getOutputPipeName();
pps.getInputPipeName(),bm.FILE_LIST,Temp));}
3.2.2 捕获包含文件列表的消息后,将共享的文件列表显示出来
public void doFileList(MessageImpl mi){
System.out.println(捕获一个共享文件的列表!);
MessageElementImpl mei=(MessageElementImpl)mi.getElement(BaseMessage.FILE_LIST);
this.displayFile(mei.getStream()); }
3.2.3 捕获下载共享文件的请求后,先分析出对方请求的文件名file_name,随后利用BaseMessage产生包含指定文件流的信息,并发送到对方
public void doFileDownloadRequest(MessageImpl mi){
System.out.println(捕获一个下载本地共享文件的请求
您可能关注的文档
- 基于DirectShow的远程视频展示实现.doc
- 基于DirectShow技术的媒体播放器.doc
- 基于DirectShow架构的无线视频服务系统设计研究.doc
- 基于DELPHI的网络视频编程.doc
- 基于DirectX的视频采集与处理系统.doc
- 基于DirectX的图像旋转算法的研究与实现.doc
- 基于Div+CSS的艺术设计系网站设计.doc
- 基于DOM的XML文档到关系数据库的数据转换方法.doc
- 基于DSP的AES/EBU信号发生器设计.doc
- 基于DSP的多通道高速可扩展数据采集系统.doc
- 古琴经典艺术欣赏知到智慧树期末考试答案题库2025年北京大学.docx
- 企业价值链重构策略与盈利模式探讨.docx
- 财务分析师如何跟踪并分析企业的研发活动.docx
- 古建筑木作知到智慧树期末考试答案题库2025年湖北生态工程职业技术学院.docx
- 古琴文化知到智慧树期末考试答案题库2025年潍坊工程职业学院.docx
- 古琴艺术鉴赏知到智慧树期末考试答案题库2025年青岛恒星科技学院.docx
- 石墨烯与复合材料在水处理领域的应用研究.docx
- 中国式现代化进程中的历史脉络、热点问题与未来发展方向研究.docx
- 会计专业创新人才培养体系构建.pptx
- 古希腊神话知到智慧树期末考试答案题库2025年上海外国语大学贤达经济人文学院.docx
文档评论(0)