接收包基类CInPacket,发送包基类COutPacket
QQ协议中,不管是接收包还是发送包,在应用层都分为三个部分:
包头,包括协议类型,源QQ版本号,命令号,和包序列号,发送包还有一个需要/不需要ack标志
包体和包尾,其中包体是需要加密解密的部分,以后再介绍
值得注意的是,QQ号码和密码等等都是在包体即需要加密解密的部分中,但包头中包含的东西非常重要,它包括:
QQ协议类型,如QQ基本协议族用的是QQ::QQ_HEADER_BASIC_FAMILY(CInPacket/COutPacket的m_bHeader)
源QQ版本号,在发IM包(即和其它QQ号通讯)中,在包体也会设置一次,但和QQ系统通讯时,这个源QQ版本号就是这个协议库使用的版本号,现在是QQ::QQ_CLIENT_VERSION_0E1B,即QQ2005的版本号(CInPacket/COutPacket的m_sSource)
命令号,这个就很多了,每个CInPacket/COutPacket派生类会设置这个值(CInPacket/COutPacket的m_sCommand)
包序列号,QQ用它来防止丢包,这个只是发IM包时用到,包序列过程以后介绍(CInPacket/COutPacket的m_sSequence)
代码svn:
https://vcye23.svn.sourceforge.net/svnroot/vcye23/qqprotocol/引用请注明出处,谢谢
posted on 2007-10-12 00:27
叶子墙 阅读(1473)
评论(0) 编辑 收藏 引用