到目前為止,我已經(jīng)介紹了QQProtocol中代碼的基本結(jié)構(gòu):
CQQUser存儲(chǔ)一個(gè)QQ用戶的所有信息,包括客戶指定信息(用戶名,密碼等)和服務(wù)器返回信息(指在和服務(wù)器通訊過程中服務(wù)器“設(shè)置的”信息,如各種各樣的密鑰是在和服務(wù)器通訊過程中某些特定步驟由服務(wù)器生成并返回的,而還有些信息如服務(wù)器IP和端口則是最初由客戶指定,但有可能因?yàn)榉?wù)器重定向而改變,等等等等)
CInPacket和COutPacket是發(fā)送/接收包基類,CBasicInPacket/CBasicOutPacket是QQ基本協(xié)議族發(fā)送/接收包基類,CBasicFamilyParser是QQ基本協(xié)議族消息管理器,至于要和QQ服務(wù)器正常通訊,還要用“翻譯”成QQ服務(wù)器的“語(yǔ)言”——由CCrypter加密/解密包
最后,所有類使用的常量則實(shí)現(xiàn)為類QQ的公共靜態(tài)成員變量
而所有這些類都是為CQQClient類服務(wù)的,它是QQProtocol的操作接口(數(shù)據(jù)接口則是CQQUser)。目前實(shí)現(xiàn)的版本主要接口是Login,負(fù)責(zé)向QQ服務(wù)器登錄。由它負(fù)責(zé)創(chuàng)建一個(gè)工作線程,向服務(wù)器發(fā)包,等待回復(fù),回復(fù)的結(jié)果調(diào)用CQQClient的虛函數(shù),所以對(duì)于庫(kù)的使用者,需要生成一個(gè)派生類實(shí)現(xiàn)這些虛函數(shù)以處理回復(fù)。
至此,很多朋友關(guān)心的demo也可以實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的版本了,目前的demo是個(gè)命令行程序,使用UDP方式登錄,已經(jīng)測(cè)試成功。
代碼svn:
https://vcye23.svn.sourceforge.net/svnroot/vcye23/qqprotocol/例子svn:
https://vcye23.svn.sourceforge.net/svnroot/vcye23/demo/引用請(qǐng)注明出處,謝謝
posted on 2007-10-31 10:38
葉子墻 閱讀(5068)
評(píng)論(14) 編輯 收藏 引用