前言
- 在一次學習過程中,突然結識到了Socket套接字這一內容,瞭解到它可以實現客戶端與服務器端的通信,而自己之前寫代碼都是一些乾巴巴的語句,並沒有過這種可以實現一端與一端可以交流的相關知識內容,所以特別想動手實踐,可以看到效果,便有了這個小項目的雛形。
所用技術
- Socket套接字:首先用到Socket編程裏的某些類來創建服務器端與客戶端,並進行客戶端與服務器端的連接
- 多線程:因爲不只要創建一個客戶端,要多個客戶端之間進行通信
- 線程池:爲了方便管理,節約資源,我選擇了多線程連接池
- I/O輸入輸出:客戶端要向服務器發送消息,也會收到服務器發來的消息;服務器也一樣,所以會用到輸入輸出流相關內容
功能實現
- 多個客戶端成功連接上服務器,服務器顯示客戶端在線人數
- 客戶端可以向其他所有在線客戶端發送消息
- 客戶端可以給指定用戶名的客戶端發送消息
使用手冊
- 開啓服務端與一個或多個客戶端
- 客戶端註冊:
輸入:
username:客戶端名稱
客戶端名稱自定義
- 若連接成功,服務器端顯示上線信息
- 指定客戶端通信:
輸入:
P:用戶名-發送的消息
冒號後面爲要發送消息的對象,“-”後面爲要發送的消息
- 與所有在線客戶端通信
輸入:
G:要發送的消息
冒號後面爲要給所有在線客戶端發送的消息
測試
- 邊界值法:當客戶端線程數大於線程池設置線程數,超過的線程數註冊不成功;
- 等價類法:輸入不規則的通信格式,則通信失敗,輸入有效的通信格式,則成功;
- 場景設計法:當雙方連接服務器成功,則可以相互正常通信,當某一方或雙方同時斷開連接,則通信失敗;