基於C/S架構的聊天系統的實現
阿新 • • 發佈:2019-01-22
主要思路:
結構:
客戶端 伺服器mysql伺服器
客戶端與伺服器之間的描述如下圖:
伺服器與mysql之間的描述如下圖:
伺服器的邏輯機制
1.通過協議類組合註冊實現主要功能
主要類:Register_base 用於協議註冊
協議類的父類:Packet_base用於協議類繼承
緩衝區類:Area_Buffer用於資料包的檢查
協議類:
註冊類:Register_Logic
登入類:Login_Logic
新增好友:Add_Logic
查詢好友:Find_Logic
刪除好友:Del_Logic
聊天類:Talk_Logic
傳送檔案:File_Logic
退出類:Out_Logic
邏輯處理類:
Logic
靜態類:Static_Variable 用於儲存物件
以聊天功能為例主要思路如下:
1,在自己客戶端找到自己所擁有的好友賬號為:123,寫一句話點擊發送按鈕
2,點擊發送按鈕後 把自身的聊天資訊包括Id,friendid,內容,通過聊天類:Talk_Logic 的encode函式進行打包,得到包含聊天資訊的byte陣列
3,然後把陣列通過客戶端的物件傳到傳送執行緒的佇列中,然後傳送給伺服器
4,伺服器通過解包函式,得到相應的處理協議,然後把資料包給邏輯處理類:Logic
5,邏輯處理類通過協議ID找到相應的協議類,然後再呼叫協議類的process函式進行處理
6,當聊天的資料包走到Talk_Logic的process函式時,進行解包然後查詢好友ID是否線上
7,若好友線上則把資料包通過好友的Socket傳送給好友
8,若好友不線上則呼叫mysql的Send函式把資料包相關內容傳送給mysql伺服器,進行離線資訊的儲存