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网络架构等内容。

相关推荐
2601_9625029020 分钟前
双工位蜡镶机控制系统工程实践:并行架构、视觉对齐与实时同步避坑指南
架构
论迹复利34 分钟前
多平台移植 BTBLE Stack 的思路与踩坑实战——从 Ceva IP 到厂商适配层的迁移指南
嵌入式硬件·物联网·架构
stolentime39 分钟前
SP8549 MAIN75 - BST again题解
c++·算法·二叉树·深度优先·图论·记忆化搜索·组合数学
ziguo11221 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
stolentime1 小时前
AT_pakencamp_2020_day1_k Gcd of Sum题解
c++·算法
2601_956121971 小时前
map_计蒜客T1271 完美K倍子数组
c++·算法
代码不会写2 小时前
Apache Iceberg:架构原理、读写机制、性能优化与生态
性能优化·架构·apache·iceberg
王维同学3 小时前
IFEO Debugger、VerifierDlls 与 SilentProcessExit 配置
c++·windows·安全·注册表
heimeiyingwang3 小时前
【架构实战】云原生架构:容器化与Kubernetes落地之路
云原生·架构·kubernetes
小保CPP3 小时前
OpenCV C++计算多边形的最大内切圆
c++·人工智能·opencv·计算机视觉