littlebot
Published on 2025-04-10 / 0 Visits
0

【源码】基于muduo网络库的聊天服务器

项目简介

本项目是基于muduo网络库的高并发聊天系统,采用C++编写,以muduo库为网络核心模块,结合Redis和MySQL实现消息的发布订阅与数据持久化。客户端通过TCP协议和服务器通信,使用JSON进行消息的序列化和反序列化,支持多用户在线聊天、好友管理、群组管理等功能。

项目的主要特性和功能

  1. 高并发处理:借助muduo库的epoll+多线程设计,支持高并发连接和消息处理。
  2. 消息序列化:采用JSON作为消息序列化和反序列化格式,方便消息传输与解析。
  3. 负载均衡:利用Nginx实现TCP负载均衡,提升后端服务并发能力。
  4. 消息通信:基于Redis的发布 - 订阅功能,实现跨服务器消息通信。
  5. 数据持久化:使用MySQL数据库持久存储用户数据、好友关系、群组信息等。
  6. 连接池:运用连接池提高数据库读写性能。
  7. 客户端功能:支持用户登录、注册、添加好友、创建群组、加入群组、一对一聊天和群聊等。

安装使用步骤

1. 环境准备

  • 操作系统:CentOS 7
  • 开发工具:Visual Studio Code(远程连接CentOS 7)
  • 依赖库:muduo、Redis、MySQL、Nginx、jsoncpp、hiredis

2. 安装依赖库

```bash cd muduo mkdir build && cd build cmake .. make sudo make install

sudo yum install redis

sudo yum install mysql-server

sudo yum install nginx

sudo yum install jsoncpp-devel

cd hiredis make sudo make install ```

3. 配置Nginx

编辑Nginx配置文件 /usr/local/nginx/conf/nginx.conf,配置TCP负载均衡: ```nginx stream { upstream chat_server { server 127.0.0.1:8000; }

server {
    listen 8000;
    proxy_pass chat_server;
}

} 启动Nginx:bash cd /usr/local/nginx/sbin/ ./nginx ```

4. 启动MySQL和Redis

启动MySQL服务: bash service mysql start 启动Redis服务: bash redis-server

5. 编译和运行服务器

进入项目目录,编译服务器代码: bash mkdir build && cd build cmake .. make 运行服务器: bash ./chatserver <ip> <port>

6. 运行客户端

编译客户端代码: bash cd src/client g++ main.cpp -o chatclient 运行客户端: bash ./chatclient <server_ip> <server_port>

7. 使用客户端

客户端支持以下命令: - login <username> <password>:登录 - reg <username> <password>:注册 - addfriend <friend_id>:添加好友 - creategroup <group_name> <group_desc>:创建群组 - addgroup <group_id>:加入群组 - groupchat <group_id> <message>:群聊 - chat <friend_id> <message>:一对一聊天 - logout:注销

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】