项目简介
本项目是基于muduo网络库的高并发聊天系统,采用C++编写,以muduo库为网络核心模块,结合Redis和MySQL实现消息的发布订阅与数据持久化。客户端通过TCP协议和服务器通信,使用JSON进行消息的序列化和反序列化,支持多用户在线聊天、好友管理、群组管理等功能。
项目的主要特性和功能
- 高并发处理:借助muduo库的epoll+多线程设计,支持高并发连接和消息处理。
- 消息序列化:采用JSON作为消息序列化和反序列化格式,方便消息传输与解析。
- 负载均衡:利用Nginx实现TCP负载均衡,提升后端服务并发能力。
- 消息通信:基于Redis的发布 - 订阅功能,实现跨服务器消息通信。
- 数据持久化:使用MySQL数据库持久存储用户数据、好友关系、群组信息等。
- 连接池:运用连接池提高数据库读写性能。
- 客户端功能:支持用户登录、注册、添加好友、创建群组、加入群组、一对一聊天和群聊等。
安装使用步骤
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】