寫服務端(整體設計思路):
服務端主要實現一下功能:
1、處理客戶端登陸請求;
3、處理客戶端傳送資訊(包括文字、圖片、表情)請求;
4、處理客戶端傳送檔案請求(包括髮送離線檔案請求);
5、處理客戶端聊天記錄下載請求;
6、處理客戶端查詢使用者列表、加好友等請求;
以上各個功能點圍繞“網路通訊”和“資料庫維護”兩個基本點展開:
任務處理邏輯:
使用windows完成埠+執行緒池技術實現網路通訊,可以使用現成的網路庫,當新的請求報文到達時,例項化對應的任務類,並投遞到一個任務佇列中;該任務佇列使用訊號量核心物件來維護,當有新的任務時,從執行緒池中啟用一個執行緒去執行該任務。
業務邏輯細則:
1、當客戶端接入,但超過n分鐘未登陸,服務端主動斷掉該客戶端,已節約服務端資源;
2、當客戶端登陸,在資料庫中記錄該使用者的IP地址以及埠號,並記錄登陸狀態,表明該使用者已經登陸,對於已經登陸的客戶端,不允許重複登陸。當客戶端登出、主動結束通話、被動結束通話等事件發生時,清除該使用者的登陸狀態。
4、當客戶端傳送檔案請求時,如果雙方均線上,則伺服器首先協調雙方客戶端進行直連,如果直連成功,傳送方直接給接收方傳送檔案,服務端不介入資料轉發;如果直連不成功,或者接收方不線上,伺服器要求客戶端首先傳送檔案驗證資訊,目的是對要傳送的目標檔案進行查詢,如果服務端已經存在相同的檔案(檔名相同、大小相同、MD5校驗相同),則通知客戶端無需上傳,同時在資料庫對已存在的檔案引用計數+1;如果服務端不存在該檔案,則通知客戶端傳送檔案並接收。
5、收到客戶端下載聊天記錄請求時,服務端從資料庫中查詢改使用者的聊天記錄,並分頁傳送給客戶端。
寫客戶端:
任何報文請求遵循下列步驟:
傳送請求報文---等待服務端處理結果---對結果進行處理。
寫服務端(整體設計思路):
服務端主要實現一下功能:
1、處理客戶端登陸請求;
3、處理客戶端傳送資訊(包括文字、圖片、表情)請求;
4、處理客戶端傳送檔案請求(包括髮送離線檔案請求);
5、處理客戶端聊天記錄下載請求;
6、處理客戶端查詢使用者列表、加好友等請求;
以上各個功能點圍繞“網路通訊”和“資料庫維護”兩個基本點展開:
任務處理邏輯:
使用windows完成埠+執行緒池技術實現網路通訊,可以使用現成的網路庫,當新的請求報文到達時,例項化對應的任務類,並投遞到一個任務佇列中;該任務佇列使用訊號量核心物件來維護,當有新的任務時,從執行緒池中啟用一個執行緒去執行該任務。
業務邏輯細則:
1、當客戶端接入,但超過n分鐘未登陸,服務端主動斷掉該客戶端,已節約服務端資源;
2、當客戶端登陸,在資料庫中記錄該使用者的IP地址以及埠號,並記錄登陸狀態,表明該使用者已經登陸,對於已經登陸的客戶端,不允許重複登陸。當客戶端登出、主動結束通話、被動結束通話等事件發生時,清除該使用者的登陸狀態。
4、當客戶端傳送檔案請求時,如果雙方均線上,則伺服器首先協調雙方客戶端進行直連,如果直連成功,傳送方直接給接收方傳送檔案,服務端不介入資料轉發;如果直連不成功,或者接收方不線上,伺服器要求客戶端首先傳送檔案驗證資訊,目的是對要傳送的目標檔案進行查詢,如果服務端已經存在相同的檔案(檔名相同、大小相同、MD5校驗相同),則通知客戶端無需上傳,同時在資料庫對已存在的檔案引用計數+1;如果服務端不存在該檔案,則通知客戶端傳送檔案並接收。
5、收到客戶端下載聊天記錄請求時,服務端從資料庫中查詢改使用者的聊天記錄,並分頁傳送給客戶端。
寫客戶端:
任何報文請求遵循下列步驟:
傳送請求報文---等待服務端處理結果---對結果進行處理。