看文件看的有點迷糊,不如看下源**talk下example下的login例子的**很簡單。
std::cout << "auth cookie: ";
std::string auth_cookie;
std::getline(std::cin, auth_cookie);
std::cout << "user name: ";
std::string username;
std::getline(std::cin, username);
// start xmpp on a different thread
xmppthread thread;
thread.start();
buzz::xmppclientsettings xcs;
xcs.set_user(username.c_str());
xcs.set_host("gmail.com");
xcs.set_use_tls(buzz::tls_disabled);
xcs.set_auth_cookie(auth_cookie.c_str());
xcs.set_server(talk_base::socketaddress("talk.google.com", 5222));
thread.login(xcs);
// use main thread for console input
std::string line;
while (std::getline(std::cin, line))
return 0;
重點就是xmppclientsettings和xmppthread2個類的內容了。
檢視xmppclientsettings的定義,是xmppusersettings的子類,2個類好像都只是作為資料的封裝用。只有屬性,沒有實質性的行為。
不知道這裡set_host和set_server有啥區別。host和server不是同乙個東西嗎?
xmppthread是繼承自talk_base::thread, xmpppumpnotify, talk_base::messagehandler 的乙個實現。
login中呼叫了乙個post方法。不知道post方法是來自**的.post只是提交了乙個訊息。可能是系統自帶的吧。具體的login過程是寫在onmessage裡面的
xmppthread建立的時候就生成了乙個xmpppump類。呼叫xmpppump的dologin方法來完成基於xmpp協議的登入。
然後就是乙個接收訊息的迴圈。迴圈佔cpu啊。所以這個只是login的例子。
可恨的是這個例子也沒有是否登入成功的提示。。。好悲劇啊
我猜是否更新成功的提示是應該寫在onstatechange事件中的。例子中沒有實現。
寫了點**輸出這個狀態變數state。可是不管我賬戶和密碼是否對,只有124狀態,沒有3狀態啊。好像3狀態才是成功的。
enum state ;
可能需要ssl,可能。。。好吧。先這樣吧。
來看call的例子。試了下這個例子時能登入的。
而且,我承認這個例子已經很強大了。
2012-2-20今天看了下,0.6.13已經出來了。
想試著把例子call做成乙個vs專案。
編譯600多個錯誤
加上win32 環境定義 屬性設定,c/c++,preprocess,preprocess definitions裡加。
另外少了testing部分的**。可以先把相關的檔案去掉。。**應該是有的,路徑不對吧。好像hammer.bat能產生對應的lib庫。
後面有個str啥的undeclared的錯誤,是因為feature_enable_voicemail 沒加
具體可以看constrans.h裡的條件編譯**
然後出來很多的link錯誤,有300多個。根據經驗,這個當然是lib設定不對的問題咯
新增了lib路徑,linker裡加了對應的引用後。少了很多。
還有和msvcprtd.lib衝突的。在configuration properties -> linker -> ignore specific library"裡設定下
2012-2-21
然後繼續錯誤,根據錯誤google,新增winmm.lib 剩103錯誤
新增ws2_32.lib 剩26錯誤
新增crypt32.lib secur32.lib dnsapi.lib,剩10個錯誤
新增iphlpapi.lib 剩9個 。真鬱悶,少了這些lib有沒有更好的方法查呢。非得google?
突然想到檢視scons檔案。新增了strmiids.lib 剩7個
根據scons檔案的線索。發現要用/mt模式編譯
然後把前面ignore specific library 的lib去掉。ok成功了。。
小小的佩服下自己,不是只會google的小白了。搞了半天,可能是只有設定成mt模式,然後安裝scons的要求新增需要的lib就可以了。改天再試試看。
如何建立乙個模組 如何起步建立乙個童裝品牌?
自從有了童裝創業的想法,腦海中蹦出無數想法。從0到1建立乙個品牌,首先要問清楚自身,理想中這將是乙個怎樣的品牌?展示出來是怎樣的形象?希望消費者對品牌產生怎樣的感受?最終實現品牌的什麼目標?這些問題,並不是一開始就能確定答案,也不會是一成不變。我們應該從建立品牌,到運營 維護品牌,都對這些問題保持思...
如何建立乙個dblink
建立乙個dblink的詳細步驟 1 啟動伺服器資料庫 2 建立乙個本地net服務名 oracle oracle92 configuration and migration tools net configuration assistant 3 登入sqlplus 用本地帳戶登入 4 建立dblink...
如何建立乙個GitLab Web Hooks
git 能在特定的重要動作發生時觸發自定義的指令碼。這些指令碼都被儲存在 git 目錄下的 hooks 子目錄中 git hooks 當 git init 初始化乙個倉庫時,git 缺省會在這個目錄中放置一些示例指令碼。這些指令碼一般都是 shell 指令碼。不過自定義的可執行指令碼可以使用你喜歡的...