# chat **Repository Path**: biteDancer/chat ## Basic Information - **Project Name**: chat - **Description**: Java聊天室程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-12 - **Last Updated**: 2024-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java聊天室应用 这是一个基于JavaFX和Socket实现的简单聊天室应用,支持多人聊天、发送文本消息和图片。 ## 功能特点 - 用户登录功能 - 多人实时聊天 - 发送文本消息 - 发送图片 - 用户头像显示 - 类似微信的聊天界面 ## 环境要求 - JDK 17 或更高版本 - JavaFX SDK 17.0.6 或更高版本 - Maven 3.6 或更高版本 ## 运行原理 ### 1. 基于TCP的Socket通信 - 使用TCP协议确保消息可靠传输 - 服务器持续监听客户端连接请求 - 每个客户端都与服务器建立独立的Socket连接 ### 2. 多线程处理 - 服务器使用多线程处理多个客户端连接 - 客户端使用独立线程监听服务器消息 - 避免消息处理阻塞主线程 ### 3. 消息广播机制 - 服务器维护所有客户端连接 - 收到消息后广播给所有连接的客户端 - 实现群聊功能 ### 4. JavaFX界面更新 - 使用Platform.runLater确保UI更新在JavaFX线程中执行 - 实现界面实时更新 ## 程序特点 ### 1. 用户管理 - 支持用户名登录 - 随机分配用户头像 - 显示用户在线状态 ### 2. 消息类型支持 - 支持文本消息 - 支持图片消息 - 支持系统通知消息 ### 3. 界面设计 - 仿微信的聊天界面 - 自己发送的消息靠右显示(绿色) - 他人发送的消息靠左显示(白色) - 显示用户头像和名称 ### 4. 用户体验优化 - 新消息自动滚动 - 支持图片发送 - 消息实时显示 - 用户友好的界面 ### 5. 错误处理 - 完善的异常处理 - 资源正确关闭 - 连接异常处理 ## 技术特点 ### 1. 模块化设计 - 分离的客户端和服务器端 - 清晰的MVC架构 - 独立的消息处理逻辑 ### 2. 可扩展性 - 易于添加新的消息类型 - 可以扩展更多功能 - 界面易于定制 ### 3. 代码复用 - 通用的消息处理机制 - 可重用的UI组件 - 统一的样式定义 ## 项目结构 ## 使用说明 ### 方法一:在IDE中运行 1. **启动服务器** - 在IDE中找到 `ChatServer.java` - 右键点击,选择 "Run 'ChatServer.main()'" - 等待看到 "服务器已启动,等待客户端连接..." 的提示 2. **启动第一个客户端** - 在IDE中找到 `HelloApplication.java` - 右键点击,选择 "Run 'HelloApplication.main()'" - 在弹出的窗口中输入用户名(如:"用户1")并点击登录 3. **启动第二个客户端** - 再次运行 `HelloApplication.java` - 在新窗口中输入不同的用户名(如:"用户2")并点击登录 4. **开始聊天** - 在任意客户端的输入框中输入消息 - 点击"发送"按钮或按回车键发送消息 - 点击"图片"按钮可以发送图片 ### 方法二:使用打包后的程序 1. **运行服务器** - 双击运行 `run_server.bat` - 等待看到服务器启动提示 2. **运行客户端** - 双击运行 `ChatClient.exe`,可以运行多次来启动多个客户端 - 每个客户端窗口使用不同的用户名登录 ### 聊天功能说明 1. **文本消息** - 在底部输入框输入文字 - 点击发送按钮或按回车键发送 2. **图片消息** - 点击"图片"按钮 - 在弹出的文件选择器中选择图片 - 支持 jpg、png、gif 格式 3. **界面特点** - 自己发送的消息显示在右侧(绿色) - 他人发送的消息显示在左侧(白色) - 每个用户都有随机分配的头像 - 系统消息居中显示 ### 注意事项 1. **启动顺序** - 必须先启动服务器 - 再启动客户端 - 可以同时运行多个客户端 2. **用户名要求** - 每个客户端需要使用不同的用户名 - 用户名不能为空 3. **网络要求** - 默认使用本地连接(localhost) - 端口号:12345 - 确保防火墙不会阻止程序运行 4. **系统要求** - Java 17 或更高版本 - 足够的系统内存(建议 4GB 以上) - 图形界面支持 ### 常见问题解决 1. **无法连接服务器** - 检查服务器是否已启动 - 检查防火墙设置 - 确认端口 12345 未被占用 2. **客户端无响应** - 检查服务器是否正常运行 - 重启客户端程序 - 检查系统资源使用情况 3. **图片无法发送** - 确认图片格式支持(jpg/png/gif) - 检查图片文件大小是否过大 - 确保有足够的系统内存 4. **界面显示异常** - 确保Java版本正确 - 检查显示器分辨率设置 - 尝试重启程序 ### 开发环境配置 如果你想要修改或编译这个项目,需要: 1. **安装JDK 17** ```bash java -version # 检查Java版本 ``` 2. **安装Maven** ```bash mvn -version # 检查Maven版本 ``` 3. **克隆项目** ```bash git clone [项目地址] cd chat ``` 4. **编译运行** ```bash mvn clean package # 编译打包 ```