- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XMPP 协议在Android 即时通讯系统中的应用.doc
XMPP 协议在Android 即时通讯系统中的应用
摘要:即时通讯是一种基于互联网的网络应用,目前很多即时通讯系统,如MSN,QQ等,但由于使用了不同的协议,各个系统之间不能互联。可扩展消息与存在协议(XMPP)是即时通讯系统通信协议的标准,该文提出一种基于XMPP协议的即时通讯系统方案,并基于Android平台设计实现了即时通讯客户端,有效的解决了即时通讯系统中通信不畅的问题,并为其他类型智能平台间的即时通信提出一种可参考的解决方案。
关键词:即时通讯;可扩展消息与存在协议 ;Android
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)28-6268-03
目前主流的即时通讯协议主要有可扩展消息与存在协议(XMPP)、空间和即时信息协议(PRIM)、即时信息和空间协议(IMPP)以及针对即时通讯和空间平衡扩充的会话初始协议SIP(SIMPLE)。其中,XMPP协议是基于XML的协议,高度自由、高度开发,并易于掌握,其技术规格已经被IETF互联网工程小组定义在RFC3920及RFC3921,任何遵循XMPP协议的软件都可以实现相互通讯。[1]
本文遵循XMPP协议,基于Android操作系统设计实现即时通讯系统,使用Openfire服务器及Smack客户端类库实现即时通讯的基本功能,解决不同即时通讯软件的通信问题。
1 XMPP协议分析
1.1 XMPP的体系结构
XMPP协议采用客户端—服务器架构,其基本网络结构中定义了三种角色:客户端、服务器和网关;XMPP服务器支持服务器之间DNS路由,所有从客户端到客户端的数据和消息都需要经过XMPP服务器进行转发。[2]
1.2 XMPP的消息格式
基于XMPP协议即时通讯的核心是XML流传输协议,它以片段的形式在网络上发送XML流,即在TCP连接上传输XML流,是XMPP即时通讯指令的传递手段。[3]
XMPP协议的XML流包含了三种元素,其中,元素用于确定用户的订阅状态,可以查询、询问好友的在线状态,同时也可以发布自己的在线状态;元素用于两个XMPP用户之间发送消息,它规定了消息的源节点、目的节点、发送方式和消息的内容等;元素管理XMPP服务器上任意两个用户间的转换,并且允许他们通过相应的XML格式的查询。
1.3 XMPP的安全机制
XMPP协议族一共有四层,从底层到上层分别是TCP协议、TLS协议、SASL协议和XMPP协议层。如图1。
为了提供通信的保密性和数据完整性,在TCP传输协议之上,XMPP协议族引入了安全传输层协议(TLS),防止服务器间发送的数据被篡改或偷听,保证了在传输过程中数据的安全。TLS协议由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)。[2][6]此外,XMPP协议族还支持SASL认证(简单认证与安全层),以支持多种认证机制。
2 服务器端设计
2.1 Openfire
Openfire 是基于XMPP 协议的即时通讯服务器端的一个实现,是一个开源的实时协作(RTC)服务器,采用并实现了插件机制,方便扩展。由于采用了开放的XMPP协议,我们可以使用各种支持XMPP协议的即时通讯客户端软件访问服务器。[5]
2.2 信息认证
在XMPP服务器中,各客户端之间的连接都需要通过服务器进行转发,服务器端对每个客户端的连接请求进行认证操作。服务器设计了认证组件,首先要调用XML解析模块对客户端用户发送的XML消息进行解析,获得用户的认证信息,认证组件将对认证信息进行认证,最终将认证结果返回给客户端用户。流程图如图2: [4][5]
2.3 消息处理
服务器消息处理主要任务是为获取信息认证后,针对每个客户端的连接建立一个与客户端地址结构相关的会话,并且在会话的上下文中进行消息的发送和接收。[3]
Openfire服务器采用线程技术来提高服务器处理消息的性能,同时使用线程池来管理线程,为每个连接服务器的客户端用户创建单独的会话,每个会话对应于一个线程池中的线程。当服务器收到了客户端发送过来的消息,经过处理后立即交给相应的会话线程来进行处理;同时客户端在与服务器取得连接后也会建立对应的会话,此时由这两个会话负责客户端和服务器端的消息传输,利用这种线程池和会话机制就可以保证消息传输的即时性。
3 客户端设计
3.1 Smack类库
Smack是一个易于使用的XMPP(jabber)客户端Java类库,它封装了一系列的方法,这些方法提供了关于XMPP协议XML数据的组装,当我们需要传输XMPP协议的数据时,只需要调用Smack提供的方法就可
您可能关注的文档
最近下载
- 出院结算单费用模板.doc VIP
- 2014款北京现代瑞纳_汽车使用手册用户操作图解驾驶车主车辆说明书电子版.pdf
- ccdcmos原理介绍讲义.pptx VIP
- 驾照科目一考试题库(完整版).doc VIP
- 图像传感器ccdcmos.ppt VIP
- 美剧剧本绝望主妇台词本中英文对照精排版第一季第一集.pdf VIP
- CCDCMOS原理介绍讲义..ppt VIP
- 【生物】免疫与免疫规划第2课时课件-2025-2026学年人教版八年级生物上册.pptx VIP
- 驾照科目一考试题库(完整版).doc VIP
- 综合实践 记录我的一天 分享我的一天(说课稿)-2024-2025学年一年级上册数学北师大版(2024).docx VIP
文档评论(0)