下面我們開始接觸基本協(xié)議族具體的發(fā)送/接收包,所有的QQ會(huì)話都開始于客戶端發(fā)送基本協(xié)議族的請求登錄包,這個(gè)包的包體是空的,但是在包頭因?yàn)橛姓埱蟮卿浀腝Q號(實(shí)際上正如前面介紹的,每個(gè)基本協(xié)議族包的包頭都帶有QQ號),服務(wù)器會(huì)知道是哪個(gè)QQ號請求登錄
QQ服務(wù)器返回應(yīng)答,應(yīng)答的包體是明碼傳輸?shù)模ㄒ驗(yàn)楝F(xiàn)在還沒有密鑰),包括回復(fù)碼,如果允許這個(gè)號碼登錄則回復(fù)碼是QQ.QQ_REPLY_OK,而且返回一個(gè)登錄令牌,這個(gè)登錄令牌是在整個(gè)QQ會(huì)話過程中的第一個(gè)密鑰
在QQProtocol中請求登錄包是CBasicOutPacket派生類CRequestLoginTokenPacket實(shí)現(xiàn)的;而其回復(fù)包是CBasicInPacket派生類CRequestLoginTokenReplyPacket實(shí)現(xiàn)的。
正如在基本協(xié)議族消息管理器中介紹的一樣,請注意CBasicFamilyParser代碼改變了
而且因?yàn)镃RequestLoginTokenReplyPacket要直接訪問CQQUser的非公開成員,所以CQQUser代碼中CRequestLoginTokenReplyPacket被設(shè)為CQQUser的友元
代碼svn:
https://vcye23.svn.sourceforge.net/svnroot/vcye23/qqprotocol/引用請注明出處,謝謝
posted on 2007-10-20 01:37
葉子墻 閱讀(1811)
評論(0) 編輯 收藏 引用