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