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

相关推荐
unicrom_深圳市由你创科技6 小时前
哪些控制逻辑应该放在 PLC,哪些放在上位机?
c++
玖玥拾7 小时前
C/C++ 基础笔记(十三)继承
c语言·c++·继承
飞凌嵌入式8 小时前
T153核心板:异构架构赋能工业嵌入式,筑牢工业设备实时控制底座
架构
陈猪的杰咪8 小时前
GitHub Copilot 2026计费新规:AI Credits消耗解析与节省策略
人工智能·ai·架构·github·copilot
ao-weilai8 小时前
C++:哈希表
c++·哈希算法·散列表
汉克老师9 小时前
GESP7级C++考试语法知识(二、指数函数(1、pow() 函数)
c++·指数函数·pow·gesp7级·精度误差
旖-旎9 小时前
FloodFill(图像渲染)(1)
c++·算法·深度优先·力扣
watersink9 小时前
MCP 协议与 Skill 开发架构培训文档
人工智能·架构
@insist1239 小时前
系统架构设计师-嵌入式处理器核心知识体系:从分类到架构选型全解析
架构·分类·系统架构·软考·系统架构设计师·软件水平考试
汉克老师10 小时前
GESP2026年3月认证C++六级真题与解析(编程题1 选数)
c++·动态规划·线性dp·gesp六级·状态转移·选与不选