0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于JXTA开发技术和Java语言实现对等式网络模型即时通信系统的设计

电子设计 来源:微计算机信息 作者:符巍,郑雪峰 2021-05-22 16:15 次阅读

一、 引言

最近几年,对等式网络模型P2P开始受到重视,成为最近的技术热点。P2P即Peer to Peer,称为对等连接或对等网络,它与传统的客户端/服务器(C/S)或浏览器/服务器(B/S)模式相比,最大的不同是降低了对服务器的依赖,在P2P网络中各Peer之间的关系是对等的,Peer同时具有Client和Server的特点。它们可以直接通信,进行文件传输,无需依赖集中式服务器或资源就可完成。

P2P技术将在网络尤其是宽带网络方面具备强大的应用潜力,2002 legend world大会上中科院计算机所的李国杰所长对P2P技术与网格技术的融和做出了非常有远见的预测,国外P2P网络流量占据了整个网络流量的40%,国外P2P网络注册用户超过3亿以上这些都是有力的证据,从试验科学的角度来看,P2P技术是因为解决了互联网模型中的弱链接模块的信息传递这个障碍,使得互联网的信息流动更加通畅才使他具备了这样强大的生命力和应用前景。

目前,P2P 技术的应用主要是在文件共享和即时通讯方面这两个方面。所谓即时通讯,其实指的就是诸如OICQ、ICQ等被称为在线聊天的软件。从某种意义上说,由于版 权的限制,即时通讯应用将超过文件共享应用,成为P2P的第一大应用。我基于JXTA(JXTA将在第二节作详细介绍)设计了一个简单的P2P即时通信系统,它可以实现互联网上任意两台主机之间的直接连接,不仅可以随时知晓对方在线与否,而且交流双方的通讯完全是点对点进行,不依赖服务器的性能和网络带宽,它为开发更多的P2P应用提供了基础。由于Java为网络编程提供了很好的支持和优化,并且是跨平台的,可移植性好,因此,我们选用Java作为开发语言。

二、 JXTA简介

由于P2P应用软件的前景看好,各大软件公司都在竞相开发P2P的软件开发产品,Sun的JXTA就是其中的一个。使用JXTA开发技术,软件开发人员可以开发出基于Java语言的P2P的应用软件。JXTA技术是一组开发式的协议,它们能够连接网络中的任何设备,从手提电话、无线PDA到台式电脑,让它们协同工作、共享资源。JXTA网络里面的全部结点共同组成了一个虚拟网络,里面的任何一个结点都能直接访问其他的结点,即使那些结点是位于防火墙的背后。

1、 使用JXTA技术来开发分布式计算软件,可以实现以下功能:

(1) 能够直接跟防火墙之后的其他结点连接;

(2) 简易的共享文档资料

(3) 得到网络上包含的信息的简要目录;

(4) 建立结点群组来提供定制的服务;

可以在远端监视某个结点的行为。

2、 JXTA的软件结构分为以下三层(如图1所示)

(1)核心层(JXTA Core):它包含了服务所需要的核心功能,这一层封装了最根本的东西,包括Peer、对等组、Peer发现、Peer通信、Peer监视和相关的安全原语。

(2)服务层(JXTA Service):它提供了访问JXTA协议的接口,这一层包括了对于P2P网络不是必需的、但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制。

(3)应用层(JXTA Application):它使用服务来访问JXTA网络和JXTA提供的功能。这一层包括了应用JXTA服务卡发出来的完整的P2P应用程序,例如myJXTA ,JXTA-CAD等应用程序。

图1 JXTA的层次结构三、 结构设计

1、 总体介绍

本系统是一个建立在基于JXTA的P2P网络之上的即时通信软件,它的功能类似于我们目前常常用到的即时通信软件,如OICQ、ICQ和MSN等。即时通信系统分为发送(sender)、中继转发(transfer)和接收(receiver)三部分。当transfer启动时加入P2P网络,并且在P2P网络中发布提供即时通信服务的通告。Sender加入P2P网络,通过查找P2P网络通告寻找提供服务的transfer,选择transfer形成P2P网络通道。Sender在这个通道基础上建立与目的端的SOCKET连接,将信息传递到receiver。传递的信息是用XML形式封装的字节数组,数据被保存在XML文件中,由transfer解析出数据。通过通道中的各个transfer对信息进行加密及解密操作,实现sender和receiver之间的通信。当用户运行该软件时,会出现登陆界面,如图2所示,如果用户是第一次运行该程序,并没有任何默认的设置,JXTA会弹出JXTA GUI 配置实用程序让你进行一些强制的和可选的设置。当用户输入正确的用户名和密码之后,就会加入JXTA网络,并启动本机的JXTA服务,成为JXTA网络中的一个Peer。

图2系统通信过程示意图如图2所示,A、B、P1、P2……P5都是存在于基于JXTA的P2P网络中的Peer,其中的A希望与B建立连接进行通信,而B收到A发出的Advertisement并对其进行验证,当验证通过,则A与B之间建立Pipe,进行消息的传递。

2、 层次结构

系统主要分成三个部分:

l P2P网络中的中继转发部分(transfer)

l 系统的发送部分(sender)

l 系统的接收部分(receiver)

(1)中继转发部分(transfer)

Transfer主要负责提供匿名通信的服务,接收sender不同类型的消息,对其信息进行解密操作并且传递到JXTA网络中下一个Peer的transfer,如果是最终结点PEER就首先建立与receiver的连接,然后将信息解密之后,再解析XML文件得到数据传递到receiver。然后再接收receiver不同类型的消息,对其信息进行加密操作并且传递到下一个Peer的transfer ,直到传回到sender。在sender请求建立通道时,必须根据sender 请求信息判断这个transfer是作为中间结点处理数据还是作为最终结点处理数据,两者的处理信息方式有很大区别。如果信息传递过程中出现问题,将出错信息传回receiver。

(2)发送部分(sender)

sender主要负责查找JXTA网络中提供匿名通信服务的transfer,通过找到的transfer建立起一条基于P2P网络的通道,然后就可以在这条通道上建立每一个SOCKET通话连接,这样通过这条通道就可以传递不同类型的信息(请求建立通道、数据、请求结束通话、请求关闭通道、建立通道允许、结束通话允许、关闭通道允许以及出错信息)。在接收到receiver传递过来的信息时,由于经过加密得到的是密文,必须按照建立的P2P网络路径的顺序进行解密,才能得到所需要的明文数据。在传递信息时,把需要传递的信息封装成XML的格式,这样在需要使用这些信息的transfer上就可以解析出所需要的数据,以便于进行下一步的操作。

(3)接收部分(receiver)

receiver主要负责在接收到P2P网络中的transfer传递过来时的SOCKET连接请求时同意SOCKET连接,列出和自己建立连接的sender,通过选择sender进行基于P2P网络的信息传递。在接收到P2P网络中的transfer传递过来时的SOCKET通话结束请求时关闭SOCKET连接,同时取消在列表中的sender,这样receiver就无法与结束通话的sender再次取得联系。在receiver关闭时,必须通知所有已经与自己连接的sender,sender才可以关闭与这个receiver的连接。

3、 具体实现及代码分析

由于篇幅所限,在本文中我只对系统中的中继转发部分进行介绍。

Transfer部分主要包括如下几个重要的类:

(1)TRANSFER.CLASS

该类主要是继承了SERVERSOCKET类,SERVERSOCKET类是用来写服务器程序的类,所谓服务器程序,通常会监听某一个连接端口,如果有某一台客户端计算机发出联机的请求,则服务器就必须做出一些反应。TRANSFER.CLASS除了继承了SERVERSOCKET的创建服务器监听端口,接受连接,关闭连接的功能之外,还定义了自己的功能函数——transnext(),与下一个P2P网络结点PEER

建立连接。

(2)NEWMSG.CLASS和PARSEMSG.CLASS

在信息传递的过程中,所有的数据都是以XML文件格式封装的,将整个XML文件格式的信息作为整个字节数组byte[]进行加密和解密,在需要的结点PEER将字节数组的内容写入到XML文件中,再使用XML的解析方法将需要的数据解析出来。关于XML文件部分的操作主要由NEWMSG.CLASS和PARSEMSG.CLASS完成,其中NEWMSG.CLASS主要是将收到的信息保存到XML文件中,而PARSEMSG.CLASS主要是解析出XML文件中需要的数据。

(3)JXTASHELL.CLASS

JXTASHELL.CLASS主要是使用JXTA创建P2P网络中的点组,初始化点组,创建通告,发布通告。这个CLASS文件对搭建P2P网络起了主要的作用。

下面是部分源代码:

public void workdealwith(String m,String de){ //解析XML文件元素

try{

DOMParser parser=new DOMParser();

parser.parse(m+“.xml”); //取得需要解析的XML文件

Document dom=parser.getDocument(); //dom为结点树的根结点

NodeList games=dom.getElementsByTagName(de); //取得需要解析的元素

for (int i=0;iNode anode=games.item(i);

NamedNodeMap attributes=anode.getAttributes();

contest=anode.getFirstChild().getNodeValue(); //得到元素de的值

for (int a=0;aNode theattribute=attributes.item(a); //取得元素de的属性

type=theattribute.getNodeValue(); //得到元素de的属性的值

}

}

}catch(Exception e){}

}

四、 结束语

本文作者的创新点主要在于在JXTA架构的基础上构建一个P2P的即时通信息通。利用P2P非中心性和动态性的特征为即时通信服务,在即时通信的过程中,在发送端对消息进行加密,在接收端再对加密的消息解密,消息在JXTA网络中是以匿名方式的方式进行传输的,使数据传输更加安全。传递的信息是用XML形式封装的字节数组,数据被保存在XML文件中,由transfer解析出数据。通过通道中的各个transfer对信息进行加密及解密操作,实现客户端和目的端之间的匿名通信。在系统的设计和实现过程中,对XML文件格式、JXTA技术、加密解密技术等等做了一定的了解。但是由于时间仓促,且实验条件的限制,程序的在稳定性方面仍然存在一定的问题,这有待于进一步开发和完善。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    54

    文章

    11148

    浏览量

    103222
  • 通信系统
    +关注

    关注

    6

    文章

    1187

    浏览量

    53325
  • JAVA
    +关注

    关注

    19

    文章

    2966

    浏览量

    104701
收藏 人收藏

    评论

    相关推荐

    即时通讯是怎么做到的?

    的PC机,这样双方的即时文字消息就不通过 IM服务器中转,而是通过网络进行点对点的直接通讯,这称为对等通讯方式(Peer To Peer) 。在商用即时通
    发表于 01-21 10:41

    请教怎样去设计一种即时通信监控系统

    怎样去设计一种即时通信监控系统?如何对即时通信监控系统进行测试?
    发表于 05-28 07:16

    基于JXTA CMS 的对等网共享安全模型的构建Constr

    本文针对P2P 网络中的安全问题,详细讨论了对等节点间信任关系的建立,特别是根据证据理论计算信任值的方法,介绍了JXTA 平台的安全机制及利用其实现安全
    发表于 05-27 11:57 11次下载

    基于JXTA的P2P即时通信系统设计

    课题研究使用JXTA 搭建P2P 网络,完成即时通信系统即时通信系统分为发送、中继转发和接收三
    发表于 06-20 09:00 15次下载

    JAVA语言实现RSA公钥密码算法

    JAVA语言实现RSA公钥密码算法:本文阐述了公开密钥密码体制RSA算法的原理及实现技术。并在此基础上,给出了JAVA
    发表于 02-10 10:27 58次下载

    一种即时通信监控系统的设计与实现

    一种即时通信监控系统的设计与实现 随着科技的发展和计算机网络的普及,即时通信软件已逐渐融人人们的生活。
    发表于 11-19 09:19 701次阅读
    一种<b class='flag-5'>即时通信</b>监控<b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    基于XMPP协议的Android即时通信系统设计

    即时通信通过互联网给人们提供了便捷的通信手段,针对手机覆盖区域和效果的不断提升,提出一种在流行的Android手机操作系统上,实现客户端与客户端之间的
    发表于 05-03 17:13 66次下载
    基于XMPP协议的Android<b class='flag-5'>即时通信系统</b>设计

    基于Android平台的即时通信系统客户端设计

    为解决在基于Linux 操作系统的Android 手机平台上即时通信问题, 实现系统客户端进行文本、图片、音乐的传送和播放。采用Java
    发表于 10-11 16:47 4977次阅读
    基于Android平台的<b class='flag-5'>即时通信</b><b class='flag-5'>系统</b>客户端设计

    基于P2P结构的即时通信系统的设计与实现

    为了实现在局域网中进行通信即时通信系统就是在这种思想和背景下构思的一种基于多种基本应用的局域网应用软件支撑平台。即时通信
    发表于 04-22 14:10 33次下载
    基于P2P结构的<b class='flag-5'>即时通信</b><b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    Android的自主可控即时通信系统的设计与实现

    Android的自主可控即时通信系统的设计与实现
    发表于 08-31 10:26 3次下载
    Android的自主可控<b class='flag-5'>即时通信</b><b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    基于Android平台的即时通信系统客户端设计

    多种移动客户端提供即时通信服务系统的客户端解决方案。 1 系统开发环境 Android 的应用开发使用Java
    发表于 12-01 01:16 648次阅读
     基于Android平台的<b class='flag-5'>即时通信</b><b class='flag-5'>系统</b>客户端设计

    即时通信协议分析和信息监控的模型

    和Yahoo Messenger等即时通产品。它们大都拥有精美的界面,完善的功能,受到广大互联网用户的喜爱。但同时它们也带来了很大的安全隐患,如传播病毒、传播不健康的色情内容等。因此,基于网络信息安全的目的,对即时通信软件的监控
    发表于 01-09 17:13 0次下载

    java实现IM即时通讯聊天功能代码

    从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于C/S架构的网络聊天工具是切实可行的。本文为大家介
    发表于 01-24 16:10 2.8w次阅读

    go语言实现的简单im即时通信系统

      本文介绍了一个 go 语言实现的简单 im 即时通信系统。 简介 纯go实现的im即时通系统
    的头像 发表于 10-20 16:02 3643次阅读

    go语言实现的简单im即时通信系统解析

    【导读】 本文介绍了一个 go 语言实现的简单 im 即时通信系统。 简介 纯go实现的im即时通系统
    的头像 发表于 10-26 09:22 4389次阅读
    go<b class='flag-5'>语言实现</b>的简单im<b class='flag-5'>即时通信</b><b class='flag-5'>系统</b>解析