功能需求
- 群聊、私聊消息收發
- 文件傳輸(斷點續傳)
- 服務器踢人、群發系統消息
- 好友列表實時刷新
- 服務端/客戶端 GUI 界面
- 單服務器支持多客戶端並發
架構設計
- 通信協議:自定義二進制/文本協議,包含命令類型、發送者、接收者、內容長度、內容體。
- 服務端:主線程 Accept 連接,每客戶端啟動處理線程(或 NIO 選擇器),維護在線用戶映射表。
- 客戶端:UI 線程 + 消息接收線程 + 文件傳輸線程。
- 文件傳輸:分塊發送,支持斷點續傳,進度條顯示。
關鍵技術點
- Socket 非阻塞/多線程並發處理
- 序列化/反序列化消息對象
- Swing/JavaFX 構建 GUI,事件分發線程更新 UI
- 文件 RandomAccessFile 實現斷點續傳
- 心跳機制檢測死連接
項目結構
chat-room/
├── common/ # 共用協議、實體類
├── server/ # 服務端核心邏輯、UI
├── client/ # 客戶端核心邏輯、UI
└── resources/ # 圖標、配置文件
參考資源
作者已實現完整項目,UI 遵循 View 接口可替換,支持單聊、群聊、文件發送,解耦良好。可作為學習網絡編程與 GUI 開發的優秀實戰案例。