xmpp

xmpp學習


下載:

Openfiremysql

服務器:Openfire 4.0.2sql

客戶端:Spark 2.7.7數據庫

安裝

Openfire安裝:

根據提示一直下一步,服務器域名設置爲:localhost(ps:若是使用gloox,仍是直接用機器名,由於gloox不識別ip);數據庫使用內嵌數據庫或別的標準數據庫。api

使用mysql的時候須要注意要用管理員權限打開Openfire,不然會出現以下錯誤:瀏覽器

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

    Server Error

Caused by:

安裝完成後瀏覽器登陸:http://127.0.0.1:9090服務器

Spark

分別在兩臺電腦上安裝Spark,建立各自用戶,互添加好友,而後就能夠通訊了。jsp

本身實現客戶端

使用agsXMPP

很好用,直接到官網下載便可,有詳細例子,可是程序運行時調試輸出信息中會有svn

在 System.Net.Sockets.SocketException 中第一次偶然出現的「System.dll」類型的異常

的提示函數

網上說多是服務器的問題,暫時沒找。學習

使用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

調試例子

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

例如:MyGloox2015下MyGloox項目

MyGloox.rar

gloox內存泄露

本人發現無論是直接使用gloox仍是本身封裝gloox,都會有內存泄露,找了幾個版本以及別人寫的程序,發現都有內存泄露的問題。

使用libstrophe

libstrophe編譯

  1. 下載libstrophe-master.zip

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

  3. 而後先編譯expat,順利編譯出 lib文件、

  4. 再編譯libstrophe工程,會提示沒有parser.c。看說明文檔,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. 所有編譯經過,測試登陸和發消息,api簡潔明瞭,是目前見過最好用的xmpp庫。固然gloox和qxmpp也都很好用,還有libjingle功能更強,各取所需。

我的又遇到一個錯誤:

1>libstrophe.lib(sasl.obj) : error LNK2019: 沒法解析的外部符號 _SCRAM_SHA1_ClientSignature,該符號在函數 _sasl_scram_sha1 中被引用
1>libstrophe.lib(sasl.obj) : error LNK2019: 沒法解析的外部符號 _SCRAM_SHA1_ClientKey,該符號在函數 _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/

相關文章
相關標籤/搜索