本文來自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;
聊天曆史記錄:查詢;
文件傳輸:在線與離線文件傳輸;
界面風格:吸引用戶的首要因素。