C++ 仿 QQ 聊天室项目:Qt 客户端 + epoll 服务端 + Reactor 架构(含源码)

C++ 仿 QQ 聊天室项目实战:Qt 客户端 + epoll 服务端 + Reactor 架构 (含源码)

GitHub 地址:https://github.com/jingxincurry/IM_Chat.git

一、项目效果

该项目实现了一个完整的仿 QQ 局域网聊天室:

  • 图形化 Qt 客户端
  • Linux epoll 服务端
  • Reactor 架构版本服务端
  • 文件上传与下载
  • 在线用户列表同步
  • 系统消息广播

客户端界面功能

  • 输入服务器 IP 和端口
  • 用户名登录
  • 群聊消息发送
  • 在线用户显示
  • 文件列表显示
  • 上传/下载文件

二、项目结构

jsx 复制代码
IM_Chat/
├── Client/                 # Qt 客户端
├── Server/                 # epoll 服务端
├── Server_Reactor/         # Reactor 服务端(二选一用于学习)
├── CMakeLists.txt
└── README.md

三、核心功能

1. 用户登录

jsx 复制代码
CmdLogin

客户端输入用户名后发送:

服务器处理后:

  • 保存用户名
  • 广播系统消息
  • 更新在线用户列表

2. 群聊

客户端发送:

复制代码
CmdChatMessage

服务器广播给所有在线用户。

3. 在线用户列表

服务器维护:

复制代码
std::map<int,ClientSession>m_clients;

每次登录或断开后广播:

复制代码
CmdUserList

4. 文件上传

上传流程:

jsx 复制代码
UploadBegin
UploadChunk
UploadEnd

5. 文件下载

下载流程:

复制代码
DownloadRequest
DownloadBegin
DownloadChunk
DownloadEnd

6、自定义协议设计

为了解决 TCP 粘包问题,设计了固定包头协议。

7、编译方式

服务端(2个版本均可)

复制代码
cmake -S . -B build -DBUILD_CLIENT=OFF -DBUILD_SERVER=ON
cmake --build build

客户端

直接用 Qt Creator 打开根目录 CMakeLists.txt

8、运行步骤

  1. 启动服务端
  2. 启动客户端
  3. 输入 IP 和端口(默认 8888)
  4. 登录
  5. 聊天
  6. 上传/下载文件

四、项目亮点

  • 完整 IM 系统
  • Qt 图形界面
  • epoll 高并发
  • Reactor 模式
  • 自定义协议
  • 文件传输
  • 粘包处理

五、总结

这个项目完整实现了一个仿 QQ 聊天室系统,涵盖了:

C++ 网络编程、Qt GUI 开发、epoll、Reactor、自定义协议、文件传输、粘包处理、CS网络架构等内容。

相关推荐
两万五千个小时8 小时前
Claude Code 上下文管理(一):为什么 Agent 会"失忆"?
人工智能·架构·开源
Xiaoda118 小时前
从一个请求开始:LLM 推理系统如何完成一次生成?
架构
郝学胜_神的一滴9 小时前
CMake 037:宏传递流转机制与C++编译特性跨平台适配指南
c++·cmake
杉氧9 小时前
性能优化实战:如何定位冗余重组并榨干 Compose 的每一帧性能?
android·架构·android jetpack
行者全栈架构师9 小时前
PolarDB + Spring Boot 实战:从自建MySQL到云原生数据库的零停机迁移
java·后端·架构
Elcker1 天前
KoiWeave-构建企业级LLM-WIKI,打造下一阶段软件AI研发流程
架构
杉氧1 天前
Navigation Compose 深度实践:如何优雅地串联起你的全栈 App?
android·架构·android jetpack
镜舟科技1 天前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
望易1 天前
刚设计的大模型架构-双域耦合认知框架
算法·架构