如何创建一个libjingle程序
来源:互联网 发布:金属小手提箱淘宝 编辑:程序博客网 时间:2024/05/16 01:26
看文档看的有点迷糊,不如看下源代码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)) {
if (line == "quit")
break;
}
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 {
STATE_NONE = 0, //!< Nonexistent state
STATE_START, //!< Initial state.
STATE_OPENING, //!< Exchanging stream headers, authenticating and so on.
STATE_OPEN, //!< Authenticated and bound.
STATE_CLOSED, //!< Session closed, possibly due to error.
};
可能需要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就可以了。改天再试试看。
- 如何创建一个libjingle程序
- 如何创建一个win32程序
- 一个GUI程序如何创建一个控制台程序(CUI)
- [转载]Windows程序如何创建一个窗口。
- Maven(一)如何创建一个web程序
- VS2013如何创建一个Qt程序
- 微信小程序:如何创建一个小程序页面?
- libjingle登录程序调试通过
- libjingle
- Libjingle
- Libjingle
- WSS3SDK之:如何创建一个事件处理程序Feature
- 如何在Visual Studio2010上创建一个 C语言程序?!
- Linux下如何利用QtCreator下创建一个界面程序
- 如何创建一个完整的C语言程序心得
- React实战-如何快速创建调试一个Demo程序
- React-scripts 如何快速创建调试一个Demo程序
- 创建一个Arx程序
- Ajax事例(XMLHttpRequest )
- 掌握 Ajax,第 1 部分: Ajax 入门简介
- 工业设计的一般流程
- WP7中的本地数据库支持
- 掌握 Ajax,第 3 部分: Ajax 中的高级请求和响应
- 如何创建一个libjingle程序
- 基类派生类转换问题
- 大容量Nand存储器
- 程序员的进化------我要吸收大师级的精花
- symbian全屏问题——去掉界面上部的title和下部的menubar
- 2063 data counter
- 光纤环网
- PHP高级对象构建——工厂模式的使用
- 如果程序代码没有任何问题,但是工程还是显示错误,首先调整3步