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

相关推荐
什么半岛铁盒9 小时前
LangChain 入门与架构:快速搭建你的第一个 AI 应用
人工智能·架构·langchain
啷里格啷9 小时前
第三章 Fast-DDS核心源码导读与流程拆解
后端·架构
我不是懒洋洋9 小时前
大语言模型(LLM)入门:从Transformer到ChatGPT
c语言·开发语言·c++
金创想9 小时前
积木移动题目分析及解题思路——木块问题(1)
c++·算法·字符串·c·刷题·信息学奥赛·积木
BU摆烂会噶9 小时前
【LangGraph】House_Agent 实战(一):架构与环境配置
人工智能·vscode·python·架构·langchain·人机交互
woniu_buhui_fei9 小时前
单体服务拆分微服务
微服务·架构
heimeiyingwang9 小时前
【架构实战】日志体系ELK:集中化日志管理实践
elk·架构·wpf
BU摆烂会噶10 小时前
【LangGraph】House_Agent 实战(五):持久化、流式输出与部署
人工智能·python·架构·langchain·人机交互
BestOrNothing_201510 小时前
C++零基础到工程实战(5.2.4):指针与引用在函数传参、返回值与效率优化中的应用
c++·指针·引用·const·函数参数