基于muduo库的聊天集群项目(C++)


作者:borange
时间:2021/8/9 17:27
开发环境:Ubuntu VSCode
编译器:g++
数据库:MySQL
编程语言:C++
GitHub链接

项目概述

完成一个类似于QQ的项目,主要功能有注册、登陆、添加好友、创建群组、加入群组、一对一聊天、群聊天等等。
我们需要有服务器端和客户端,为了降低网络模块和业务模块的耦合性,我们这里采用MVC架构。

数据模块

表的设计

作为一个聊天项目,我们当然需要有很多的表来存储一些信息,例如客户端在登陆时,服务端需要在库中匹配相应的账号、密码信息来验证身份,用户注册时,我们也需要向表中去写入对应的 账号、密码等等。

user表

用于存放用户账号、密码、昵称、在线状态等信息
在这里插入图片描述

friend表

用于存放用户的好友信息
在这里插入图片描述

allGroup表

用于服务器管理用户已创建的所有群组信息

groupUser表

存放群组内所有的群成员信息,包括成员的角色,比如:群主(creator)、群员(normal).
在这里插入图片描述

offlineMessage表

用户除了能在线接收其他用户的信息,也能接受离线信息,离线信息存储在offlineMessage表中,等用户登录以后,将内容推给用户。
在这里插入图片描述

通信格式

服务器和客户端的通信采用了JSON来完成数据在网络中的标准传输。
对于不同的数据则是采用了不同的格式,具体如下:

1.登录
json["msgid"] = LOGIN_MSG;
json["id"]			//用户id
json["password"]	//密码

2.登录反馈
json["msgid"] = LOGIN_MSG_ACK;
json["id"]			//登录用户id
json["name"]		//登录用户密码
json["offlinemsg"]	//离线消息
json["friends"]		//好友信息,里面有id、name、state三个字段
json["groups"]		//群组信息,里面有id,groupname,groupdesc,users三个字段
					//users里面则有id,name,state,role四个字段
json["errno"]		//错误字段,错误时被设置成1,用户不在线设置成2
json["errmsg"]		//错误信息

3.注册
json["msgid"] = REG_MSG;
json[
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值