本文来自http://blog.csdn.net/cymlife 原创,引用必须注明出处!
基于QT的IM(jabber)库和客户端
这段时间一直在研究跨平台的IM(jabber)客户端,经过大量的下载、编译、测试、评估,作此记录。
使用QT作为表现层,源于QT提供了丰富的控件,以及强大的跨平台能力。jabber是一个基于XMPP协议的IM应用,解决了做什么和怎么做的问题。
使用QT来开发的jabber xmpp库,主要是依据XMPP协议,和jabber服务器进行交互,在IM系统中起到通信协议层的作用。xmpp的客户端,必须要实现XMPP RFC3920(XMPP CORE,最新规范为RFC 6120)和RFC3921(XMPP IM,最新规范为RFC 6121),以及其他辅助的XMPP Extensions协议。
jabber xmpp库
1. gloox
http://camaya.net/gloox/
纯C++的跨平台实现,全功能,易于使用。不过自1.0之后就没有更新了。
2. qxmpp
http://code.google.com/p/qxmpp/
纯QT实现,易于使用。目前版本是0.3,一直在更新。
qxmpp实现了很多XMPP Extensions协议,比如文件传输,vcard,avatar等功能。
3. jreen
http://gitorious.org/jreen
纯QT实现,易于使用。一直在更新。
4. psi(libiris)
http://psi-im.org/
psi从0.14版本之后就没有更新了。
5. psi-dev
http://code.google.com/p/psi-dev/
一群热心的开发人员继续对psi进行维护和升级,目前版本是0.15。
6. libpurple
http://pidgin.im/download/
支持多种IM的协议库,最新版本是2.9.0。
jabber xmpp QT-IM客户端
1. vacuum-im
http://code.google.com/p/vacuum-im/
纯QT实现,易于使用。目前版本是1.1,一直在更新。
vacuum实现了很多XMPP Extensions协议,比如文件传输,vcard,avatar,组聊等功能;采用插件方式,易于扩展。
2. qutecom
http://trac.qutecom.org/
qutecom的IM库采用libpurple,集成了sip电话的功能。最新稳定版是2.2.1,开发版是3.0 alpha。
qutecom使用了大量的开源库,包括:boost,ffmpeg,libosip2等等,编译过程复杂,编译速度极慢。
3. qutim
http://qutim.org/
qutim是支持多协议、跨平台(包括mobile)的IM,其中jabber协议使用jreen。系统采用插件功能,易于扩展。
4. kadu
http://www.kadu.net/w/English:Main_Page
kadu支持的IM协议包括Gadu-Gadu和jabber(使用libiris),程序结构清晰,界面友好,易于使用。
5. jabbin
http://sourceforge.net/projects/jabbin/
jabbin的IM协议使用libiris,使用libjingle库提供语音功能。jabbin的代码还使用了很多QT3的功能,有点老旧,因为QT5都快出来了。
6. kopete
http://kopete.kde.org/
kopete是KDE平台支持多协议的IM,其中jabber协议使用libiris。从0.50.80之后就是打打补丁而已。
IM客户端功能
一个完整的IM客户端,功能还是很复杂的,基本包括:
通讯协议层:和IM服务器交互;
用户管理:组织机构(分组,企业通讯录),名片管理(vcard),头像显示(avatar),用户状态,用户查找等;
文字聊天功能:聊天方式包括海聊,组聊,私聊;表情管理;贴图功能;拼写检查;聊天风格;
音视频聊天功能:使用google的webrtc;
聊天历史记录:查询;
文件传输:在线与离线文件传输;
界面风格:吸引用户的首要因素。