xmpp

xmpp學習


下載:

Openfire

服務器:Openfire 4.0.2

客戶端:Spark 2.7.7

安裝

Openfire安裝:

根據(jù)提示一直下一步,服務器域名設置為:localhost(ps:如果使用gloox,還是直接用機器名,因為gloox不識別ip);數(shù)據(jù)庫使用內(nèi)嵌數(shù)據(jù)庫或別的標準數(shù)據(jù)庫。

使用mysql的時候需要注意要用管理員權限打開Openfire,否則會出現(xiàn)如下錯誤:

HTTP ERROR 500
Problem accessing /setup/setup-profile-settings.jsp. Reason: 

    Server Error

Caused by:

安裝完成后瀏覽器登錄:http://127.0.0.1:9090

Spark

分別在兩臺電腦上安裝Spark,創(chuàng)建各自用戶,互添加好友,然后就可以通信了。

自己實現(xiàn)客戶端

使用agsXMPP

很好用,直接到官網(wǎng)下載即可,有詳細例子,但是程序運行時調(diào)試輸出信息中會有

在 System.Net.Sockets.SocketException 中第一次偶然出現(xiàn)的“System.dll”類型的異常

的提示

網(wǎng)上說可能是服務器的問題,暫時沒找。

使用gloox

下載gloox

下載地址:https://camaya.net/gloox/download/

gloox 0.9.9.12:http://camaya.net/download/gloox-0.9.9.12.tar.bz2

直接用vs打開gloox.vcxproj即可運行

gloox 1.0.15:http://camaya.net/download/gloox-1.0.15.tar.bz2

直接用vs打開gloox.vcxproj運行會有問題,需要修改一下文件。
以下提供一個可在vs2013中直接運行的gloox

gloox_lib_with_vs2013.rar

svn地址:
gloox-1.0:svn co svn://svn.camaya.net/gloox/branches/1.0

調(diào)試例子

  1. 新建一個win32控制臺空項目,字符集為多字節(jié)
  2. 新建篩選器gloox
  3. 把gloox中src文件夾與config.h.win文件復制到新項目中
  4. 修改src文件夾為gloox,并把其中文件(不包括子目錄)添加到篩選器gloox中
  5. 加載gloox文件夾下的examples中例子進行調(diào)試

例如:MyGloox2015下MyGloox項目

MyGloox.rar

gloox內(nèi)存泄露

本人發(fā)現(xiàn)不管是直接使用gloox還是自己封裝gloox,都會有內(nèi)存泄露,找了幾個版本以及別人寫的程序,發(fā)現(xiàn)都有內(nèi)存泄露的問題。

使用libstrophe

libstrophe編譯

  1. 下載libstrophe-master.zip

  2. 解壓,看看各目錄,expat是空的,再下載expat,解壓,不需要編譯,把.h和.c放到expat\lib下面。

  3. 然后先編譯expat,順利編譯出 lib文件、

  4. 再編譯libstrophe工程,會提示沒有parser.c??凑f明文檔,libstrophe缺省用的是expat,可選用libxml2,進入src下,看到有parser_libxml2.c和parser_expat.c,很明顯,把parser_expat.c改名成parser.c就可以了。編譯通過。

  5. 再編譯其他例子工程,提示沒有va_copy。vc2008時好象沒有兼容它,不過也沒關系,這問題肯定很多人碰到過,果然隨便一google,就有答案了, #define一下就行了。

     #ifndef va_copy
     # ifdef __va_copy
     # define va_copy(DEST,SRC) __va_copy((DEST),(SRC))
     # else
     # define va_copy(DEST, SRC) memcpy((&DEST), (&SRC), sizeof(va_list))
     # endif
     #endif 
    

或者

    #ifndef va_copy
    #define va_copy(d,s) ((d) = (s))
    #endif
  1. 全部編譯通過,測試登錄和發(fā)消息,api簡潔明了,是目前見過最好用的xmpp庫。當然gloox和qxmpp也都很好用,還有l(wèi)ibjingle功能更強,各取所需。

個人又遇到一個錯誤:

1>libstrophe.lib(sasl.obj) : error LNK2019: 無法解析的外部符號 _SCRAM_SHA1_ClientSignature,該符號在函數(shù) _sasl_scram_sha1 中被引用
1>libstrophe.lib(sasl.obj) : error LNK2019: 無法解析的外部符號 _SCRAM_SHA1_ClientKey,該符號在函數(shù) _sasl_scram_sha1 中被引用
1>E:\code\C\Local\xmpp\libstrophe-0.8.8\libstrophe-0.8.8\vs2008\Debug\roster example.exe : fatal error LNK1120: 2 個無法解析的外部命令

此問題需要把sasl.c與auth.c文件

如果還不行請用這個:

libstrophe(可用).rar

可用vs2008與vs2012直接打開

libstrophe文檔

http://strophe.im/libstrophe/doc/0.8-snapshot/

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容