即时通讯编程(二)

即时通讯编程(二)

作者:邵盛松  2009-05-30   QQ:346646173

目的:开发基于XMPP(Extensible Messaging and Presence Protocol)协议的即时通讯。
开发工具: Visual C++ 2005

本篇文章主要内容:编译第一个MFC环境下的程序

一win32环境下代码更改

首先需要自己架设一台jabber服务器。在这台服务器进行测试
下面是按照自己服务器的配置进行更改
JID jid( "[email protected]/gloox" );//hurkhurk表示用户名称,example.net表示你要连接的机器名字,gloox表示一个用

户标识
j = new Client( jid, "hurkhurks"); //hurkhurks这个是用户的密码

还有将下面这段代码注释掉
 /* printf( "status: %d/nissuer: %s/npeer: %s/nprotocol: %s/nmac: %s/ncipher: %s/ncompression: %s/n"
              "from: %s/nto: %s/n",
              info.status, info.issuer.c_str(), info.server.c_str(),
              info.protocol.c_str(), info.mac.c_str(), info.cipher.c_str(),
              info.compression.c_str(), ctime( (const time_t*)&info.date_from ),
              ctime( (const time_t*)&info.date_to ) );*/

上面得代码debug下出错,所以就注释掉了
file:loctime64.c
line:78

至此就可以连接到自己配置的服务器上

二 学习在MFC环境下编写登录到服务器功能

在MFC下花费了一天的时间,本来想自己封装一个类,后来类是由xledoo提供,在这里感谢xledoo。也感谢帮助我调试程序的那位暂

时不知姓名的朋友。
建立一个对话框程序。将头文件和实现添加到项目中去。

下面的类由xledoo提供 ,此类可由上面的win32程序改编
class CTeClient : public CDialog, PrivateXMLHandler, ConnectionListener, PresenceHandler
{
public:
 void Login(CString Username, CString Password, CString toServer);
 virtual void handlePresence(Stanza* stanza);
 virtual void onConnect();
 virtual bool onTLSConnect(const CertInfo& info);
 virtual void gloox::ConnectionListener::onDisconnect(gloox::ConnectionError);

 PrivateXML* privateXmlHandler_;
 virtual void CTeClient::handlePrivateXML( const std::string& tag, Tag *xml )
 {

 }
 virtual void CTeClient::handlePrivateXMLResult( const std::string& uid, PrivateXMLResult pxResult )
 {

 }
private:
    VCardManager *m_vManager;
};

Login(CString Username, CString Password, CString toServer)
登陆函数,参数是用户名称,密码,服务器名称
handlePresence函数正在处理出席事件
onConnect函数表示正在建立连接
onTLSConnectTLS函数表示信任连接
onDisconnect断开连接

需要注意的地方是debug下编译的lib库要对应debug版本,release下编译的lib库要对应release版本
字符集要设置成多字节。
上面得类我已上传,提供下载。同时打包了release版的lib库。注意我的gloox.lib和gloox.dll是在vc2005下编译。使用别的编译

器的朋友需要自己编译一下。
在对话框上添加一个按钮,添加如下事件代码。
CTeClient th;
th.Login(_T("flyfish"),_T("1"),_T("mycomputer"));
delete(th );//如果没有这句,你的客户端会处于无响应状态。

最后别忘了在dlg文件中添加#include "TeGloox.h"

虽然此类只有一个小小的功能,今后我会不断的将其完善。


上面的代码已经在 Visual c++2005下调试通过

 

 

你可能感兴趣的:(编程,String,服务器,mfc,login,通讯)