TCP多人聊天室實現簡單思路

TCP多人聊天室實現

1.1 分析
客戶端
	功能:
		1. 數據發送
		2. 數據接收
	技術:
		1. socket
		2. 輸入流和輸出流
		3. 多線程,客戶端功能模塊有兩個線程
	聊天:
		1. 羣聊
		2. 私聊
			私聊前綴 @服務器用戶ID號:msg
	
服務器
	功能:
		1. 數據轉發
		2. 用戶註冊
	技術:
		1. ServerSocket
		2. 每一個用戶對應的Sokcet對象
		3. 多線程同時在線
		4. HashMap<Integer, 用戶>
	數據轉發:
		私聊前綴判斷
		羣聊所有人發送
1.2 客戶端實現
數據發送:
	使用輸出流發送數據給服務器
	遵從Runnable接口
數據接收:
	使用輸入流從服務器端接收數據
	遵從Runnable接口

客戶端主方法:
	用戶名提交
	數據發送
	數據接收
		多線程啓動
1.3 資源關閉問題
代碼中操作了大量的輸入流和輸出流,這裏都需要進行關閉操作。
	DataInputStream, DataOutputStream, BufferedReader, Socket
	
以上這些資源都是Closeable接口的實現類,都有對應的Close方法
封裝一個工具類:
	提供一個closeAll方法,參數爲符合Closeable接口的實現類對象。
	這裏可以考慮可變長參數
		Closeable... closeable
	
	可變長參數在方法中使用的過程裏面是對應一個數組,這裏完成可以使用增強for來使用

工具類名:
	CloseUtil
		public static void closeAll(Closeable... closeable)
1.4 功能拓展
1. 用戶退出
	用戶輸入指定字段之後可以退出
	客戶端Socket服務
	服務端Socket服務
	涉及資源關閉,線程關閉

2. 用戶異常退出
	在運行過程中發現問題,需要及時處理,關閉對應的資源,終止對應的線程

3. 服務器保存所有的聊天記錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章