# Chat-GWNG 网络聊天室 一个基于Java NIO和JavaFX的现代化网络聊天室应用,支持实时消息传递和用户管理。 ## 项目简介 Chat-GWNG 是广东外语外贸大学南国商学院的网络聊天室项目,采用Java NIO非阻塞IO模型实现高性能的网络通信,使用JavaFX构建用户界面。 ## 功能特性 - ✅ 实时消息传递(TCP协议) - ✅ 用户登录/登出管理 - ✅ 群组聊天功能 - ✅ 私聊消息支持 - ✅ 在线用户列表显示(UDP协议) - ✅ 系统消息广播 - ✅ 消息撤回功能 - ✅ 图形化用户界面 ## 技术栈 ### 后端技术 - **Java 17** - 主要编程语言 - **Java NIO** - 非阻塞IO网络通信 - **Maven** - 项目构建和依赖管理 - **Lombok** - 简化Java代码 ### 前端技术 - **JavaFX 21** - 现代化桌面UI框架 - **FXML** - JavaFX界面描述语言 ### 网络协议 - **TCP** - 主要消息传输协议 - **UDP** - 在线用户列表推送 ## 项目结构 ``` chat-gwng/ ├── chat-server/ # 服务器端模块 │ ├── src/main/java/ │ │ └── space/anyi/chatServer/ │ │ ├── Main.java # 主启动类 │ │ ├── Server.java # 服务器启动类 │ │ ├── core/ │ │ │ ├── ChatServer.java # 聊天服务器核心类 │ │ │ ├── ReadHandler.java # 读事件处理器 │ │ │ └── WriteHandler.java # 写事件处理器 │ │ └── ui/ # 用户界面相关 │ └── src/main/resources/fxml/ # FXML界面文件 ├── chat-client/ # 客户端模块 │ ├── src/main/java/ │ │ └── space/anyi/chatClient/ │ │ ├── Client.java # 客户端启动类 │ │ ├── core/ │ │ │ ├── Client.java # 客户端核心类 │ │ │ ├── ReadHandler.java # 读事件处理器 │ │ │ └── WriterHandler.java # 写事件处理器 │ │ └── ui/ # 用户界面相关 │ └── src/main/resources/fxml/ # FXML界面文件 ├── chat-commom/ # 公共模块 │ └── src/main/java/ │ └── space/anyi/chatCommom/ │ ├── Message.java # 消息实体类 │ └── Encoder.java # 消息编码器 └── pom.xml # Maven父项目配置 ``` ## 快速开始 ### 环境要求 - **JDK 17+** - Java开发环境 - **Maven 3.6+** - 项目构建工具 - **JavaFX 21** - 图形界面框架 ### 安装步骤 1. **构建项目** ```bash mvn clean compile ``` 2. **启动服务器** ```bash # 方式一:命令行模式 mvn exec:java -pl chat-server -Dexec.mainClass="space.anyi.chatServer.Server" # 方式二:JavaFX界面模式 mvn exec:java -pl chat-server -Dexec.mainClass="space.anyi.chatServer.ui.ServerApplication" ``` 3. **启动客户端** ```bash # 方式一:命令行模式 mvn exec:java -pl chat-client -Dexec.mainClass="space.anyi.chatClient.Client" # 方式二:JavaFX界面模式 mvn exec:java -pl chat-client -Dexec.mainClass="space.anyi.chatClient.ui.ClientApplication" ``` ### 默认配置 - **服务器端口**: 8000 - **服务器地址**: localhost - **UDP推送端口**: 8080 ## 核心功能说明 ### 消息类型系统 项目定义了完整的消息类型系统: ```java // 消息类型 Message.MessageType.SYSTEM // 系统消息 Message.MessageType.USER // 用户消息 // 操作类型 Message.OperateType.CHAT // 聊天 Message.OperateType.LOGIN // 登录 Message.OperateType.LOGOUT // 登出 Message.OperateType.BROADCAST // 广播 Message.OperateType.UDP // UDP地址推送 Message.OperateType.REVOKE // 消息撤回 ``` ### 网络通信架构 1. **TCP连接**:用于主要的消息传输 2. **UDP推送**:用于实时更新在线用户列表 3. **Selector机制**:非阻塞IO事件处理 4. **Channel管理**:连接通道的生命周期管理 ## 开发指南 ### 代码规范 - 使用Lombok简化Getter/Setter代码 - 遵循Java命名规范 - 使用Maven标准目录结构 - 添加完整的JavaDoc注释 ### 运行调试 1. **调试服务器**: ```bash mvn exec:java -pl chat-server -Dexec.mainClass="space.anyi.chatServer.Server" ``` 2. **调试客户端**: ```bash mvn exec:java -pl chat-client -Dexec.mainClass="space.anyi.chatClient.Client" ``` ### 打包部署 ```bash # 打包所有模块 mvn clean package # 运行打包后的JAR java -jar chat-server/target/chat-server-1.0-SNAPSHOT.jar java -jar chat-client/target/chat-client-1.0-SNAPSHOT.jar ``` ## 许可证 本项目采用 MIT 许可证。 ## 联系方式 - **开发者**: 杨逸 - **学校**: 广东外语外贸大学南国商学院 - **项目时间**: 2025年 ## 更新日志 ### v1.0-SNAPSHOT (2025-09) - 初始版本发布 - 基于Java NIO的网络通信 - JavaFX图形界面 - 完整的聊天功能 - 用户管理功能