# ChatSphere **Repository Path**: dogdoog/chat-sphere ## Basic Information - **Project Name**: ChatSphere - **Description**: 简单的跨平台网络聊天室 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-04 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ChatSphere - 基于Internet的聊天室项目
ChatSphere *跨越界限,连接你我* [![Qt Version](https://img.shields.io/badge/Qt-5.12%2B-brightgreen.svg)](https://www.qt.io/) [![C++](https://img.shields.io/badge/C%2B%2B-11%2B-blue.svg)](https://isocpp.org/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)]() ## 📖 项目简介 ChatSphere 是一个基于Qt框架开发的跨平台网络聊天室应用,采用C++编写,支持多用户实时在线聊天。项目包含完整的客户端和服务器端,实现了稳定可靠的网络通信和友好的用户界面。 ## ✨ 主要特性 ### 🚀 核心功能 - **实时群聊**:支持多用户同时在线聊天 - **跨平台支持**:可在Windows、Linux、macOS上运行 - **TCP可靠传输**:基于TCP协议的稳定通信 - **粘包处理**:完善的定长包头协议,解决TCP粘包问题 - **自动重连**:网络异常时自动重连机制 ### 🛡️ 技术特点 - **多线程处理**:服务器端使用多线程处理客户端连接 - **读写锁保护**:客户端列表的线程安全保护 - **网络字节序**:标准的大端序网络数据传输 - **智能缓冲区**:自动处理不完整数据包 ### 🎨 用户体验 - **简洁界面**:直观易用的聊天界面 - **IP地址显示**:自动识别并显示用户真实IP - **连接状态提示**:实时的连接状态反馈 - **消息历史**:完整的聊天记录保存 ## 🏗️ 系统架构 ### 客户端架构 ``` ChatDialog (UI层) ↓ QTcpSocket (网络层) ↓ 定长包头协议 (数据层) ↓ TCP传输 (传输层) ``` ### 服务器架构 ``` MainDialog (管理界面) ↓ QTcpServer (连接管理) ↓ 多线程处理 (并发处理) ↓ 消息广播 (数据分发) ``` ## 📦 安装与运行 ### 环境要求 - **Qt版本**: 5.12 或更高版本 - **编译器**: - Windows: MinGW 或 MSVC - Linux: GCC 4.8+ - macOS: Clang - **C++标准**: C++11 或更高 ### 编译步骤 1. **克隆项目** ```bash git clone https://github.com/your-username/ChatSphere.git cd ChatSphere ``` 2. **使用Qt Creator打开** - 打开 `ChatSphere.pro` 文件 - 选择对应的编译套件 - 点击"构建"按钮 3. **命令行编译** ```bash qmake ChatSphere.pro make # 或使用 nmake (Windows MSVC) ``` ### 运行说明 1. **启动服务器** ```bash ./ChatServer # Linux/macOS ChatServer.exe # Windows ``` 2. **启动客户端** ```bash ./ChatClient # Linux/macOS ChatClient.exe # Windows ``` 3. **连接配置** - 默认服务器地址为你的本机网络地址 - 默认端口: `8888` - 可在客户端代码中修改连接参数 ## 🔧 配置说明 ### 服务器配置 在 `maindialog.cpp` 中修改服务器端口号: ```cpp m_sock->listen(QHostAddress::Any, Port); // 修改Port端口号 ``` ### 客户端配置 在 `chatdialog.cpp` 中修改连接设置: ```cpp m_sock->connectToHost("Your LocalHost IP", Port); // 修改服务器IP和Port端口 ``` ## 📋 使用指南 ### 基本操作 1. **启动服务器**:运行服务器程序,开始监听客户端连接 2. **启动客户端**:运行客户端程序,自动连接服务器 3. **发送消息**:在输入框中输入文字,点击发送按钮 4. **查看消息**:在聊天记录框中查看所有用户消息 ### 高级功能 - **多客户端测试**:可同时运行多个客户端实例 - **网络监控**:服务器界面显示在线用户数量 - **自动重连**:网络中断后自动尝试重新连接 ## 🔍 技术细节 ### 粘包处理机制 - **发送端**:添加4字节长度包头 - **接收端**:先读取包头,再按指定长度读取消息体 - **缓冲区**:自动处理不完整数据包 ## 🐛 故障排除 ### 常见问题 1. **连接失败** - 检查服务器IP地址和端口号 - 确认防火墙设置 - 验证网络连通性 2. **编译错误** - 确认Qt版本(5.12+)符合要求 - 检查编译器支持C++11 - 验证项目文件配置 3. **运行异常** - 检查端口是否被占用 - 验证依赖库完整性 - 查看系统日志输出 ## 🤝 参与贡献 我们欢迎任何形式的贡献! 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 👥 开发团队 - **项目发起人**: 杨家翔 - **主要开发**: 杨家翔 - **测试维护**: 杨家翔 ## 📞 联系我 - **邮箱联系**: 15097601713@163.com ## 🎯 未来规划 - [ ] 支持私聊功能 - [ ] 添加文件传输 - [ ] 实现消息加密 - [ ] 支持表情包 - [ ] 添加用户认证 - [ ] 开发移动端版本