在广东外语外贸大学南国商学院做的基于socket的聊天室项目,使用NIO模型,界面使用JavaFX

yang yi 82e29dea50 feat:使用trae美化UI vor 1 Monat
chat-gwng 82e29dea50 feat:使用trae美化UI vor 1 Monat
.gitignore 3b7b703989 first commit,聊天室项目初始化 vor 2 Monaten
README.md b1c3eda999 doc:使用trae生成readme文档 vor 1 Monat

README.md

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. 构建项目

    mvn clean compile
    
  2. 启动服务器

    # 方式一:命令行模式
    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. 启动客户端

    # 方式一:命令行模式
    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

核心功能说明

消息类型系统

项目定义了完整的消息类型系统:

// 消息类型
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. 调试服务器

    mvn exec:java -pl chat-server -Dexec.mainClass="space.anyi.chatServer.Server"
    
  2. 调试客户端

    mvn exec:java -pl chat-client -Dexec.mainClass="space.anyi.chatClient.Client"
    

打包部署

# 打包所有模块
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图形界面
  • 完整的聊天功能
  • 用户管理功能