论文部分内容阅读
[摘 要]本文在开源服务器软件 Openfire 及和 Android 平台上设计了基于XMPP 协议的即时通信系统;实现了即时通讯、好友添加、图片浏览、音乐播放、好友浏览等基本功能。所实现的系统功能完善,可为个人或企业搭建自己的即时通信系统,用于解决内部数据传输安全,实现了与其他通信系统互通等问题提出了可行性高的解决方案。
[关键词]Android平台,XMPP 通信协议,Openfire服务器,即时通信系统
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2016)02-0179-03
引言
21世纪,即时通信系统作为一种新兴的技术获得了突飞猛进的发展。即时通信(IM,Instant Messaging)是一种基于现代计算机网络通信技术的能够即时发送和接收互联网消息的交互方式。用户可以通过 Android 平台支撑的即时通信系统软件实现不同手机用户之间以及手机与电脑网络之间的视频、音频和文字等各种信息的即时交互通讯,以及移动终端之间点对点的信息交流与各种数据交换。
这些IM 系统丰富了我们的生活,给普通用户之间的低费用通讯带来了极大方便,但同时带来了新的技术和保密问题。XMPP 协议是开源协议,具有超强的扩展性和灵活性,也有成本低、研究和实现方便等优势,因而,对 XMPP 协议在该领域的研究有利于降低移动平台IM 实现的难度,为有类似需求的中小型企业提供一个低成本的解决方案。为此,本文中采用XMPP协议实现移动平台系统,以满足产品自身的需要。
1 系统开发关键技术分析
1. Android平台架构分析
Android一词的本义指“机器人”,是一个移动设备的软件平台。它提供包括:SDK、Key Apps、Middleware、Linux Kernel四个部分在内的开源手机操作系统。它开放了基于内核以上的开发工具,从而保证了内容的可移植性和多样性,为系统开发者开发应用程序提供了一套很好的框架,用户可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用。
1.1 Android 系统层次结构
如图1所示,Android的架构是由:Linux内核、/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,通过编译基于框架的应用程序可以降低开发负荷应用软件原则上是在Dalvik VM上运行的。
1).关键应用程序
Android平台内包含一些关键应用程序,如:邮件收发客户端程序、短信收发程序、日历和网页浏览器等。
2)应用程序框架
Android应用程序的开发基于框架和组件。Android本身己在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。
3)C/C++函数库
Android应用程序框架之下是一套C/C++函数库,它们服务于Andrei应用程序组件,其功能通过组件间接提供给开发者。
4)Java程序运行环境
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
5)Linux内核
Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。
1.2 Android应用的构成和工作机制
对于一个Android应用程序来说,是由Activity、IntentReceiver、Serviee、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xd中进行配置,这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等,其中:
1) Activity组件,主要负责创建与用户进行交互的显示窗口,用户可以在这些窗口里通过调用SetContentView(View)方法来显示其用户界面;
2) IntentReceive组件,用于对外部事件的响应,当外部事件发生时,会使用NotifieationManager通知用户。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。
3) Service组件是不带UI提供连续信息的应用程序。本系统客户端扩展功能的音乐播放就是采用Service来进行设计和开发的,使用户可以边聊天边听音乐。
4) ContentProvider应用程序组件能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据迁移性。
2 XMPP 协议基础
XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的。它继承了在XML环境中灵活的发展性,因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 XMPP中定义了三个角色:客户端、服务器、网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
XMPP的基本网络结构如下:
C1----S1---S2---C3
C2----+--G1===FN1===FC1
符号表示:C1,C2,C3=XMPP客户端;S1,S2=XMPP;服务端G1=在XMPP和使用外部消息网络(非XMPP)的协议之间转换的网;FN1=外部消息网络;FC1=外部消息网络的客户端。
1)服务器
服务系统是XMPP通信的智能提取层,它主要负责:管理来自其他个体的会话连接或者XML流(streams)和来自客户端、服务器、其他个体的认证发送在XML流实体之中的适当的XML地址节点。
2)客户端
大多数客户端是通过TCP直接连接,并且使用XMPP获得服务器提供全部Jabber协议原理及其应用功能和其他服务。
3)网关
它的主要功能是将XMPP协议转换成外部消息(non-XMPP)系统使用的协议,也将返回的数据转换成XMPP。这些通信是基于网关和服务器,基于网关和外部消息系统之间的。
3 基于Android平台的即时通讯系统
本系统采用C/S体系结构〕,采用开源的XMPP作为即时通讯协议,通过GPRS无线网络采用TCP协议连接到服务器,通过架设开源的Openfire服务器作为即时通讯平台,实现客户端与客户端之间的即时通讯。
3.1 系统概述
本文是在Android平台上开发即时手机通讯系,它能够使用户在手机上方便的、迅捷的收发及时消息、传输图片。此外,根据现今用户对于即时通讯软件的特殊要求,比如:在聊天的基础之上还要有一些增值服务功能,以满足不同用户的需求。根据这些特点,本系统除了即时文本消息和图片的传输外,还实现了音乐播放和图片浏览的功能,让用户可以边聊天边听音乐,可以对好友传送过来的图片随时进行浏览,从而实现即时通讯系统的功能多样化。
3.2 系统架构
如图3所示,本系统采用客户端(C)/ 服务端(S)架构的体系结构,具有服务器端和客户端。
服务器端:采用基于XMPP协议的实时协作IM跨平台服务器---开源的Openfire服务器,为提供客户端进行会话连接、消息转发、认证及后台管理功能。
客户端:用户间的通讯是通过服务器的转发来实现的,将信息打包成XML文件发送给服务器,然后服务器将其转发给相应的用户。在Asmack库的支持下,XMPP的客户端的登录,认证,消息收发等基本功能需要重写相应函数,并调用相应接口来实现。
客户端采用MVC的软件结构。采用Android的XML文件对界面进行描述,作为视图层,负责前台界面的显示;Android的Activity活动类承载了控制层的任务,通过Activity进行逻辑业务处理;而对于数据库和与服务器连接的操作则属于Model层,该层在具体设计上则依赖于自定义的服务类。
4 本即时通讯系统的具体设计与实现
4.1 本系统主要界面
本系统为客户端/服务器端的系统架构,服务器端由基于Jabber技术的开源服务器Openfire和MySQL数据库共同构成。其中,Openfire服务器负责处理所有用户的请求、访问数据库和消息的传递;而客户端是基于Andrnid平台开发的,负责连接并登录服务器,通过服务器来实现客户端与客户端或PC机客户端之间的即时通讯。
1.Openfire服务器管理界面
如图4所示,通过该管理界面,管理员可以方面的管理用户的会话连接,服务器安全设置,以及用户信息等。
2)用户注册登录界面。
输入用户名密码后点击登录,客户端向服务器端发起login请求,登录成功后,客户端会将自己的Presence的状态置为available并发送给服务器,表示当前用户在线。不当对于登录成功的用户具有:浏览好友、图片浏览、音乐播放及添加好友等功能模块。
3)图片浏览功能:在本模块中,合法用户不仅可以实现本地图片的浏览功能,而且对于选中的图片还可以实现图片的自动缩放功能,以便于用户更好地阅读图片。
4)音乐播放界面:音频主界面主要是通过一个XML布局文件实现的,我们把它命名为music.xml,这里采用相对布局和线性布局相结合的方法。
5)即时通讯模块
如图5所示,本系统即时通讯模块集成了与好友之间的各种通讯方式,有普通的文本通讯、文件传输、留言录音通讯、语音通话功能。
4.2 文件传输模块的具体实现
在本系统功能实现过程中涉及到的文件传输分为:发送端和接收端。发送端主要通过sendFile()进行文件的发送,两个参数分别为path和msg,path代表文件路径,而msg代表伴随文件传输的普通文本信息。Msg中包含着文件名、文件路径等信息。然后创建FileTransferManager,并创建一个输出文件TransFer,调用其sendFile方法将文件发送出去,同时启动新线程用来对文件发送状态进行更新。
文件接收端也是需要创建FileTransferManager,然后通过addFileTransferListener方法设置文件监听,当有文件传输时,而且同意接收后,则通过IncomingFileTransfer来接收文件,并存入默认的目录中去。
5 结论
本即时通讯系统主要来用C/S的软件架构,并釆用XMPP协议作为即时通讯基本功能的通信协议,服务器端采用开源的Openfire服务器,客户端釆用了基于Android的开发平台。除了即时文本信息的传输外,还可以进行图片的传输,将IDEA数据加密算法引入系统中,对系统的通讯信息进行加密处理,保证通讯数据的安全,并对系统客户端的功能进行了扩展,增加了音乐的播放和图片浏览的功能。
参考文献
[1] 李新路.XMPP协议在Android即时通讯系统中的应用[J].电脑知识与技术,2013,(28)
[2] 罗伟.基于Android平台的即时通讯系统的研究与实现[D].湖南师范大学,2009
[3] 黄伟敏.基于XMPP协议的Android即时通信系统设计[J]电子设计工@,2011,19(8)
[4] 陈航,赵方.基于服务器推送技术和XMPP的Web IM系统实现[J].计算机工程与设,2010,31(5)
[5] Matos V, Grasser R. Building applications for the Android OS mobile platform: a primer and course materials[J]. Journal of Computing Sciences in Colleges, 2010, 26(1): 23-29.
[6] 罗伟. 基于 Android 平台的即时通讯系统的研究与实现 [D][D]. 长沙: 湖南师范大学, 2009.
[7] 孟贺. 基于 Android 的即时通讯系统的设计与实现[D]. 山东大学, 2014.
[关键词]Android平台,XMPP 通信协议,Openfire服务器,即时通信系统
中图分类号:TP311.52 文献标识码:A 文章编号:1009-914X(2016)02-0179-03
引言
21世纪,即时通信系统作为一种新兴的技术获得了突飞猛进的发展。即时通信(IM,Instant Messaging)是一种基于现代计算机网络通信技术的能够即时发送和接收互联网消息的交互方式。用户可以通过 Android 平台支撑的即时通信系统软件实现不同手机用户之间以及手机与电脑网络之间的视频、音频和文字等各种信息的即时交互通讯,以及移动终端之间点对点的信息交流与各种数据交换。
这些IM 系统丰富了我们的生活,给普通用户之间的低费用通讯带来了极大方便,但同时带来了新的技术和保密问题。XMPP 协议是开源协议,具有超强的扩展性和灵活性,也有成本低、研究和实现方便等优势,因而,对 XMPP 协议在该领域的研究有利于降低移动平台IM 实现的难度,为有类似需求的中小型企业提供一个低成本的解决方案。为此,本文中采用XMPP协议实现移动平台系统,以满足产品自身的需要。
1 系统开发关键技术分析
1. Android平台架构分析
Android一词的本义指“机器人”,是一个移动设备的软件平台。它提供包括:SDK、Key Apps、Middleware、Linux Kernel四个部分在内的开源手机操作系统。它开放了基于内核以上的开发工具,从而保证了内容的可移植性和多样性,为系统开发者开发应用程序提供了一套很好的框架,用户可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用。
1.1 Android 系统层次结构
如图1所示,Android的架构是由:Linux内核、/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,通过编译基于框架的应用程序可以降低开发负荷应用软件原则上是在Dalvik VM上运行的。
1).关键应用程序
Android平台内包含一些关键应用程序,如:邮件收发客户端程序、短信收发程序、日历和网页浏览器等。
2)应用程序框架
Android应用程序的开发基于框架和组件。Android本身己在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。
3)C/C++函数库
Android应用程序框架之下是一套C/C++函数库,它们服务于Andrei应用程序组件,其功能通过组件间接提供给开发者。
4)Java程序运行环境
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
5)Linux内核
Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。
1.2 Android应用的构成和工作机制
对于一个Android应用程序来说,是由Activity、IntentReceiver、Serviee、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xd中进行配置,这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等,其中:
1) Activity组件,主要负责创建与用户进行交互的显示窗口,用户可以在这些窗口里通过调用SetContentView(View)方法来显示其用户界面;
2) IntentReceive组件,用于对外部事件的响应,当外部事件发生时,会使用NotifieationManager通知用户。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。
3) Service组件是不带UI提供连续信息的应用程序。本系统客户端扩展功能的音乐播放就是采用Service来进行设计和开发的,使用户可以边聊天边听音乐。
4) ContentProvider应用程序组件能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据迁移性。
2 XMPP 协议基础
XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的。它继承了在XML环境中灵活的发展性,因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 XMPP中定义了三个角色:客户端、服务器、网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
XMPP的基本网络结构如下:
C1----S1---S2---C3
C2----+--G1===FN1===FC1
符号表示:C1,C2,C3=XMPP客户端;S1,S2=XMPP;服务端G1=在XMPP和使用外部消息网络(非XMPP)的协议之间转换的网;FN1=外部消息网络;FC1=外部消息网络的客户端。
1)服务器
服务系统是XMPP通信的智能提取层,它主要负责:管理来自其他个体的会话连接或者XML流(streams)和来自客户端、服务器、其他个体的认证发送在XML流实体之中的适当的XML地址节点。
2)客户端
大多数客户端是通过TCP直接连接,并且使用XMPP获得服务器提供全部Jabber协议原理及其应用功能和其他服务。
3)网关
它的主要功能是将XMPP协议转换成外部消息(non-XMPP)系统使用的协议,也将返回的数据转换成XMPP。这些通信是基于网关和服务器,基于网关和外部消息系统之间的。
3 基于Android平台的即时通讯系统
本系统采用C/S体系结构〕,采用开源的XMPP作为即时通讯协议,通过GPRS无线网络采用TCP协议连接到服务器,通过架设开源的Openfire服务器作为即时通讯平台,实现客户端与客户端之间的即时通讯。
3.1 系统概述
本文是在Android平台上开发即时手机通讯系,它能够使用户在手机上方便的、迅捷的收发及时消息、传输图片。此外,根据现今用户对于即时通讯软件的特殊要求,比如:在聊天的基础之上还要有一些增值服务功能,以满足不同用户的需求。根据这些特点,本系统除了即时文本消息和图片的传输外,还实现了音乐播放和图片浏览的功能,让用户可以边聊天边听音乐,可以对好友传送过来的图片随时进行浏览,从而实现即时通讯系统的功能多样化。
3.2 系统架构
如图3所示,本系统采用客户端(C)/ 服务端(S)架构的体系结构,具有服务器端和客户端。
服务器端:采用基于XMPP协议的实时协作IM跨平台服务器---开源的Openfire服务器,为提供客户端进行会话连接、消息转发、认证及后台管理功能。
客户端:用户间的通讯是通过服务器的转发来实现的,将信息打包成XML文件发送给服务器,然后服务器将其转发给相应的用户。在Asmack库的支持下,XMPP的客户端的登录,认证,消息收发等基本功能需要重写相应函数,并调用相应接口来实现。
客户端采用MVC的软件结构。采用Android的XML文件对界面进行描述,作为视图层,负责前台界面的显示;Android的Activity活动类承载了控制层的任务,通过Activity进行逻辑业务处理;而对于数据库和与服务器连接的操作则属于Model层,该层在具体设计上则依赖于自定义的服务类。
4 本即时通讯系统的具体设计与实现
4.1 本系统主要界面
本系统为客户端/服务器端的系统架构,服务器端由基于Jabber技术的开源服务器Openfire和MySQL数据库共同构成。其中,Openfire服务器负责处理所有用户的请求、访问数据库和消息的传递;而客户端是基于Andrnid平台开发的,负责连接并登录服务器,通过服务器来实现客户端与客户端或PC机客户端之间的即时通讯。
1.Openfire服务器管理界面
如图4所示,通过该管理界面,管理员可以方面的管理用户的会话连接,服务器安全设置,以及用户信息等。
2)用户注册登录界面。
输入用户名密码后点击登录,客户端向服务器端发起login请求,登录成功后,客户端会将自己的Presence的状态置为available并发送给服务器,表示当前用户在线。不当对于登录成功的用户具有:浏览好友、图片浏览、音乐播放及添加好友等功能模块。
3)图片浏览功能:在本模块中,合法用户不仅可以实现本地图片的浏览功能,而且对于选中的图片还可以实现图片的自动缩放功能,以便于用户更好地阅读图片。
4)音乐播放界面:音频主界面主要是通过一个XML布局文件实现的,我们把它命名为music.xml,这里采用相对布局和线性布局相结合的方法。
5)即时通讯模块
如图5所示,本系统即时通讯模块集成了与好友之间的各种通讯方式,有普通的文本通讯、文件传输、留言录音通讯、语音通话功能。
4.2 文件传输模块的具体实现
在本系统功能实现过程中涉及到的文件传输分为:发送端和接收端。发送端主要通过sendFile()进行文件的发送,两个参数分别为path和msg,path代表文件路径,而msg代表伴随文件传输的普通文本信息。Msg中包含着文件名、文件路径等信息。然后创建FileTransferManager,并创建一个输出文件TransFer,调用其sendFile方法将文件发送出去,同时启动新线程用来对文件发送状态进行更新。
文件接收端也是需要创建FileTransferManager,然后通过addFileTransferListener方法设置文件监听,当有文件传输时,而且同意接收后,则通过IncomingFileTransfer来接收文件,并存入默认的目录中去。
5 结论
本即时通讯系统主要来用C/S的软件架构,并釆用XMPP协议作为即时通讯基本功能的通信协议,服务器端采用开源的Openfire服务器,客户端釆用了基于Android的开发平台。除了即时文本信息的传输外,还可以进行图片的传输,将IDEA数据加密算法引入系统中,对系统的通讯信息进行加密处理,保证通讯数据的安全,并对系统客户端的功能进行了扩展,增加了音乐的播放和图片浏览的功能。
参考文献
[1] 李新路.XMPP协议在Android即时通讯系统中的应用[J].电脑知识与技术,2013,(28)
[2] 罗伟.基于Android平台的即时通讯系统的研究与实现[D].湖南师范大学,2009
[3] 黄伟敏.基于XMPP协议的Android即时通信系统设计[J]电子设计工@,2011,19(8)
[4] 陈航,赵方.基于服务器推送技术和XMPP的Web IM系统实现[J].计算机工程与设,2010,31(5)
[5] Matos V, Grasser R. Building applications for the Android OS mobile platform: a primer and course materials[J]. Journal of Computing Sciences in Colleges, 2010, 26(1): 23-29.
[6] 罗伟. 基于 Android 平台的即时通讯系统的研究与实现 [D][D]. 长沙: 湖南师范大学, 2009.
[7] 孟贺. 基于 Android 的即时通讯系统的设计与实现[D]. 山东大学, 2014.