到目前為止,我已經介紹了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
葉子墻 閱讀(5066)
評論(14) 編輯 收藏 引用