到目前为止,我已经介绍了QQProtocol中代码的基本结构:
CQQUser存储一个QQ用户的所有信息,包括客户指定信息(用户名,密码等)和服务器返回信息(指在和服务器通讯过程中服务器“设置的”信息,如各种各样的密钥是在和服务器通讯过程中某些特定步骤由服务器生成并返回的,而还有些信息如服务器IP和端口则是最初由客户指定,但有可能因为服务器重定向而改变,等等等等)
CInPacket和COutPacket是发送/接收包基类,CBasicInPacket/CBasicOutPacket是QQ基本协议族发送/接收包基类,CBasicFamilyParser是QQ基本协议族消息管理器,至于要和QQ服务器正常通讯,还要用“翻译”成QQ服务器的“语言”——由CCrypter加密/解密包
最后,所有类使用的常量则实现为类QQ的公共静态成员变量
而所有这些类都是为CQQClient类服务的,它是QQProtocol的操作接口(数据接口则是CQQUser)。目前实现的版本主要接口是Login,负责向QQ服务器登录。由它负责创建一个工作线程,向服务器发包,等待回复,回复的结果调用CQQClient的虚函数,所以对于库的使用者,需要生成一个派生类实现这些虚函数以处理回复。
至此,很多朋友关心的demo也可以实现一个最简单的版本了,目前的demo是个命令行程序,使用UDP方式登录,已经测试成功。
代码svn:
https://vcye23.svn.sourceforge.net/svnroot/vcye23/qqprotocol/例子svn:
https://vcye23.svn.sourceforge.net/svnroot/vcye23/demo/引用请注明出处,谢谢
posted on 2007-10-31 10:38
叶子墙 阅读(5001)
评论(14) 编辑 收藏 引用