基于XMPP协议的IM登录实现(一)

来源:互联网 发布:淘宝助理是什么 编辑:程序博客网 时间:2024/06/05 07:37

 

一、XMPP协议

XMPP协议简介
XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。
在这四种协议中,XMPP是最灵活的。XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

 

1、什么是XMPP ?
XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;
核心的XML流传输协议
基于XML流传输的即时通讯扩展应用
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。

2、XMPP的基本网络结构是怎样的?
XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。

3、XMPP通过TCP传什么了?
传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。

二、XMPP登录

XMPP登录大致的流程为:输入用户名密码,与服务器(Jabber服务器)建立Socket连接,打开输入输出流,请求Jabber连接(输出XML请求),根据返回XML判断是否连接成功,连接成功进行用户名密码的验证,验证成功,显示主界面。
整个过程的详细流程图如下,由于wizFlow不支持中文,我就用英文讲究代替一下。
翻译一下:
Start——开始
input server,port,resource,username,password——输入服务器,端口,资源,用户名,密码
Connecting Socket——建立Socket连接
Connected?——是否连接
OpenStream——打开输入输出流
OutputStream:Write Request Connection XML——输出请求Jabber连接的XML流
Connecting Jabber——正在连接Jabber
InputStream:Get Response Connection XML——输入流获取服务器响应的XML
id,from null?——判断服务器响应的XML是否包含id,from属性
OutputStream:Write Authentication XML——输出验证XML流,该XML包含用户名,密码信息
Acthenticating Account——正在验证账户
InputStream:Get Response Authentication XML——输入流获取服务器响应的XML
type equals “result”?——判断服务器响应的XML中type属性是否等于result
Main Form——显示主界面
 

 

原创粉丝点击