基于JXTA的P2P局域网即时通信应用的设计.pdf

上传人:赵** 文档编号:46682734 上传时间:2022-09-27 格式:PDF 页数:9 大小:468.41KB
返回 下载 相关 举报
基于JXTA的P2P局域网即时通信应用的设计.pdf_第1页
第1页 / 共9页
基于JXTA的P2P局域网即时通信应用的设计.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《基于JXTA的P2P局域网即时通信应用的设计.pdf》由会员分享,可在线阅读,更多相关《基于JXTA的P2P局域网即时通信应用的设计.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 http:/-1-中国中国科技论文在线科技论文在线 基于基于 JXTA 的的 P2P 局域网即时通信应用的局域网即时通信应用的 设计设计 陈睿,陈磊*作者简介:陈睿,(1987-),男,在读硕士,主要研究方向:数字电视。通信联系人:陈磊,(1967-),男,博士,副教授,主要研究方向:数字电视、图像通信领域.E-mail:(北京邮电大学信息与通信工程学院,北京 100876)5 摘要摘要:点对点网络(peer-to-peer,简称 P2P)是一种分布式的应用结构,它能够将任务或者工作量分散到各个对等点上,这个特点让其在这个飞速发展的网络中变得十分流行。而JXTA 作为 SUN 推出的 P2P

2、 平台,由于其功能强大几乎是 Java 程序员在开发 P2P 应用时的唯一选择。本文对一个局域网即时通信应用进行了需求分析,展示了部分交互机制。同时指出了 JXTA 库设计上的问题,并给出了部分的关键代码。10 关键词关键词:计算机应用技术;P2P;JXTA;即时通信 中图分类号中图分类号:TP311.1 Design of a JXTA-based Peer-to-Peer IM application within LAN 15 CHEN Rui,CHEN Lei(School of Information and Communication Engineering,Beijing Uni

3、versity of Posts and Telecommunications,Beijing 100876)Abstract:That Peer-to-peer(P2P)networking is a distributed application architecture that partitions tasks or workloads between peers,makes it more and more popular in the rapid 20 developping Internet.As a P2P platform published by SUN,JXTA is a

4、lmost the only choice when developing P2P applications on Java due to its strong features.In this paper,needs analysis of the application is done when some interaction mechanism is also showed.Meanwhile,some issues from JXTA are indicated,along with some key code.Keywords:Computer Application;P2P;JX

5、TA;Instant Messaging 25 0 引言引言 互联网发展初期,网络上的服务完全依靠大型服务器强大的处理能力和网络带宽提供。然而互联网的魅力在于能把思维中的想法和创新快速的转化为现实,其发展速度是计算机硬件完全无法比拟的,因此服务器的性能严重制约互联网的发展。正是在这样的背景下,P2P30 应运而生1。互联网的主要目的是对信息进行快速的收集和分发,因此即时通信软件作为人们在网络上互相通信交流的主要形式一直都是互联网应用的核心。因此在这方面的开发一直层出不穷,而且在即时通信软件上掌握的用户群甚至比操作系统更为忠诚。JXTA 作为 SUN 推出的 P2P 开发平台在 Java 领域有

6、着巨大的优势,它很好的将底层的35 通信连接抽象为通信管道(Pipe)的形式,让开发者集中于上层结构的设计。1 JXTA 介绍介绍 JXTA 是 Sun 微系统对等网络的标准,这是一个努力的方向,以它来促进和探究分布式计算的新方法。“JXTA”这个名字既用来指代这个标准,也用来指代研究出来的技术,这种技术处于传输平台和 P2P 通信协议的环绕之中。其开发组织被取名为单词“juxtapose(并置)”40 http:/-2-中国中国科技论文在线科技论文在线的简易形式2。1.1 JXTA 结构结构 JXTA 的体系结构分为三层,如图 1 所示:JXTA 核心 JXTA 核心包括最小以及最重要的对于

7、 P2P 网络很常见的要素。它包括建立允许 P2P 应45 用的核心机制(节点发现)、通信传输(包括防火墙和 NAT 穿越)、对等点和对等点组的建立以及相关的安全要素。服务层 服务层包含一些对于 P2P 网络操作不是绝对必要但是很常见并且应当具有的网络服务。这些服务例如查找、排序、指向、存储系统、文件共享、分布式文件系统、资源整合和出租、50 协议转化、认证以及 PKI(Public Key Infrastructure,即公共密钥基础)服务。应用层 应用层包括整合程序的实现,例如 P2P 即时通信、文件资源共享、娱乐内容管理和传递、P2P 电邮系统、分布式拍卖系统以及其它很多3。55 图 1

8、 JXTA结构图 Fig.1 Structure of JXTA 2 需求分析需求分析 本软件要求实现局域网内的即时通信功能,具体的内容有节点的发现、对等点之间的一60 对一通信、对等点到对等点组的一对多通信、对等点之间的文件传输和视音频传输,并且需要具有良好的扩展性。3 网络模型设计网络模型设计 JXTA 非常适合用于即时通信应用,因为平台本身基于 P2P 技术设计,避免了大量信息通过中心节点造成过度负载,从而引起系统变慢和崩溃的情况发生。由于程序基于 Java 65 Applet 开发,所有节点均通过中心服务器获取程序,这里采用 P2SP 的非完全集中式的网络结构,所有节点均与服务器相连,

9、所有的上下线信息均通过服务器同步和分发,而节点获得组内其他节点的在线状态后可以不通过服务器与节点直接相连,这样既有 P2P 的负载分散特性又有 C/S 结构的能够集中式同步节点状态的优点4 5。http:/-3-中国中国科技论文在线科技论文在线 70 图 2 P2SP 网络拓扑图 Fig.2 topology of a P2SP-Network 通过对程序进行分层设计可以使程序的模块分工明确,减少模块之间的功能耦合度,降低程序的复杂度,并且有利于日后对程序进行模块添加6。程序的分层定义如下:75?网络层 最底层,这里是物理的以太网,用来维持节点之间通信的基础。?中间层 由 JXTA 提供的对等

10、点发现协议、端点路由协议以及管道和 Socket 等组成,用来封装底层网络和为上层的应用层提供接口。80?应用层 通过调用 JXTA 的节点发现、消息传送等功能来实现文本传送、文件传输以及视频音频通信等具体通信方式。4 模块设计模块设计 本程序从功能上分为三大模块:用户界面(GUI)模块、通信模块、资源模块。其中资源85 模块生成和存储这个应用所需要的所有资源,包括:用户的各种管道广告信息、用户信息、本机网络资源以及国际化资源。三个模块相互协作构成本软件的基本框架,如图 3 所示:http:/-4-中国中国科技论文在线科技论文在线 图 3 模块示意图 Fig.3 Structure of th

11、e application in modules 90 程序开始时通过入口函数传入用户名、语言等信息,并完成网络模块和用户界面模块的初始化。下面介绍用户界面模块和通信模块的设计。4.1 用户界面模块用户界面模块 用户界面是软件和用户之间交互的最主要方式,属于之前设计的三层结构中的应用层。95 本软件作为网页版网管系统的子系统,使用 Java applet 实现。因此不能像桌面应用拥有丰富的操作空间和层次结构,设计的原则是简单明了,并且由于是嵌在网页中的程序,对其可靠性的要求更高,否则容易导致一系列的崩溃。本程序是一个与 QQ、MSN 类似的聊天工具,不同点在于其部署环境为网页,因此界面上应该尽

12、量简洁,减少弹出窗口的使用。其总体结构如图 4 所示。100 这里使用了 Swing 进行界面开发,Swing 是一个用于开发 Java 应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing 开发人员只用很少的代码就可以利用 Swing 丰富、灵活的功能和模块化组件来创建优雅的用户界面。http:/-5-中国中国科技论文在线科技论文在线 105 图 4 用户界面层次 Fig.4 hierarchy of GUI 4.2 通信模块通信模块 通信模块是程序能够与外界相交互的最重要的组成部分。本程序的通信机制是基于110 JXTA

13、协议开发的,由于 JXTA 的节点发现机制 Discovery 从运行到发现新节点所需时间过长,非常不适合用于局域网,因此决定重新制定新的节点发现机制。JXTA 用于通信的组件包括 Pipe 和 Socket,具体的使用情况如下:1)JxtaBiDiPipe,用于节点之间的文字通信,以及信令传输。2)JxtaSocket,用于节点之间的字节流传输,这里用于文件传输。115 3)JxtaPropagatedPipe,广播型的文本通信,用于对等点组内的通信使用。4.2.1 发现机制的设计发现机制的设计 JXTA 提供了对等点发现协议(Peer Discovery Protocol),对等点使用这个

14、协议来通告它们的资源,同时也用来发现被其它对等点发布出来的 JXTA 资源。在网络中,它通过两种方式来完成发现工作:在本地网络上发送多播信息;如果本地没120 有想要的节点就会使用集合点(Rendezvouz Peer)之间的通信来发现外网的对等点。http:/-6-中国中国科技论文在线科技论文在线 图 5 聚集节点和边缘节点的关系 Fig.5 Relationship between rendezvous peers and edge peers 125 然而由于 JXTA 采用了多播的方式进行查找,在网络规模较大时容易产生网络风暴或者泛洪,并且由于所有的地址信息都要通过哈希函数转化,物理上

15、相近的节点转化后可能在遍历顺序上相距甚远,导致发现效率的降低。在实际使用时发现,使用 JXTA 的发现协议有时会需要 10 秒甚至更多的时间来发现已上线的节点,使用效果不佳,因此在程序中选择自己设计更简单更适合局域网使用的发现机130 制来完成节点上下线的信息发布工作。图 6 上线发现交互 Fig.6 interaction of on-line discovery 135 http:/-7-中国中国科技论文在线科技论文在线在自己设计的发现流程中,服务器起到很重要作用,对等点组内的所有节点的在线状态信息和用户信息全部储存在这里,节点和服务器通过建立 JxtaBidiPipe 进行通信,避免了因

16、为多播产生泛洪的风险。一个节点首先要通过已知的服务器的广告来与之建立 BidiPipe,传送上线信息后服务器更新在线列表并将上线信息分发给组内其他的节点,其他节点根据获得的信息与之建立连接140 就可以进行通信了。图 7 初始化流程 Fig.7 process of initiation 145 4.2.2 管道信息定义管道信息定义 在程序中 JxtaSocket 通过 Socket 实现文件传输功能,管道则负责文本信息和控制信号的传输。JXTA 提供了单向、双向和广播管道对单工、双工和多播的字符串信息传播模式进行了底层支持。但是仅有信息传播的管道是无法完成通信的,需要对信息进行规范定义,双方

17、发150 送合法的信息方能实现通信。JXTA 的管道内传播单元为 Message,Message 由名字空间和消息实体组成,其中消息实体可以为字符串或者另一个 Message。在程序中的 Message 定义如下:http:/-8-中国中国科技论文在线科技论文在线 图 8 消息单元格式定义 155 Fig.8 definition of message PDU format 通过对消息格式对统一定义可以方便地进行信息分拣、消息发送接收和分发,并且有利于消息类型的扩充和管道资源的集中管理。4.2.3 修改修改 JXTA 库库 160 另外,在开发的过程中发现 JXTA 中存在相同节点在下线后再次

18、上线会出现超时的问题,因此对 JXTA 包进行了修改。EndpointRouter 负责记录链接上的 JXTA 节点的路由信息,然而当一个节点第二次上线时,由于其 BidiPipe 的端口是随机选择的,因此第二次的端口信息和第一次相同的可能性很小,而之前保存的路由信息会导致无法连接,就无法完成点对点的通信。165 这里将 EndpointRouter 的类文件进行反编译,在其中添加如下代码:if(addr=null)return false;Destinations.Wisdom w=this.destinations.getWisdom(addr);170 if(w=null)return

19、false;w.noOutgoingMessenger();每次下线时将节点对应的 outgoingmessenger 清空就可纠正这个错误。175 5 结论结论 本文展示了一个基于 JXTA 的局域网即时通信软件的设计,虽然 JXTA 已经实现了底层的通信,但是在完成一整套的软件设计和实现仍然是十分困难的,而且 JXTA 也并不能完美 http:/-9-中国中国科技论文在线科技论文在线适应任何应用开发的需求,像本文中遇到的网络情况仅限于局域网,因此过度复杂的机制反而不能达到很好的效果。总之,体系设计的好否是一款软件是否能够快速良好开发的关键,180 做好需求分析和对软件库的熟悉是前提。另外,

20、熟悉工作机制和体系能够更好地帮助纠错,像文本提到的 JXTA 不良设计导致的连接问题,如果没有深入地了解 JXTA 的工作机制是很难纠正的。参考文献参考文献(References)185 1 邢小良.P2P 技术及其应用M.北京:人民邮电出版社,2008.2 Scott Oaks,Bernard Traversat&Li Gong.JXTA技术手册M.技桥.北京:清华大学出版社,2004.3 许斌.JXTA-Java P2P 网络编程技术M.北京:清华大学出版社,2003.4 高岭,刘红,周兆确.Java P2P 内幕M.北京:人民邮电出版社,2003.5 管磊.P2P 网络技术原理与典型系统开发M.北京:清华大学出版社,2011.190 6 潘浩.JAVA 程序设计教程M.北京:北京邮电大学出版社,2008.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁