1. 程式人生 > >基於C/S架構的聊天系統的實現

基於C/S架構的聊天系統的實現

主要思路:

結構:

客戶端 伺服器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伺服器,進行離線資訊的儲存