Skip to content

Yongdream/CHAT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 muduo 网络库的C++实现集群聊天服务器

编译方式

  • 1.清除buildbin旧文件
  • 2.自动编译生成新文件
./mk.sh

注册登录业务

  • 成功编译在bin下生成新ChatServer执行文件
  • 客户端登录服务器
./ChatServer
  • 开启监听客户端连接
telnet 127.0.0.1 6000
  • 使用zhang的账号来注册,客户端键入
 {"msgid":3,"name":"demo","password":"123456"}

客户端登录服务器 开启监听客户端连接 sql底层user查看

  • 使用zhang的账号来登录,客户端键入
{"msgid":1,"id":1,"password":"123456"}

私聊业务

  1. 使用两个账户登录聊天服务器
{"msgid":1,"id":1,"password":"123456"}
{"msgid":1,"id":2,"password":"123456"}

两个账户登录

  1. 发送消息
{"msgid":5,"id":1,"name":"Jiao","to":2,"msg":"Hello,honey!"}
{"msgid":5,"id":2,"name":"fqj","to":1,"msg":"Hello,Hello."}
{"msgid":5,"id":1,"name":"Jiao","to":5,"msg":"Hello,boy!"}

id=1用户向id=2用户进行私聊,发送消息为「Hello,honey!」

id=2用户向id=1用户进行私聊,发送消息为「Hello,Hello.」

id=1用户向id=5用户(offline user)进行私聊,发送消息为「Hello,boy!」

发送消息

  1. 离线消息存储入offlinemessage数据库

离线消息数据库

  1. id=5用户登录,id=1发来的离线消息被成功推送,底层数据库offlinemessage清空

成功推送 清空数据库

好友业务 "msgid":6

  1. id=1 添加 id=2 为好友
{"msgid":6,"id":1,"name":"Jiao","friendid":2}
  1. id=1再次登录时,返回id=1好友信息

登录好友显示

  1. Mysql底层friend变动

friend数据库

群组业务 "msgid":8、10、12

  1. 创建群组

    id = 1 用户创建 Mass Fortune 群组名,描述 It is just a test

    {"msgid":8,"id":1,"groupname":"Mass Fortune","groupdesc":"It is just a test"}

    image-20240914144827462

  2. 加入群组

    {"msgid":10,"id":2,"groupid":2}
    {"msgid":10,"id":3,"groupid":2}
    {"msgid":10,"id":4,"groupid":2}
  3. 群组聊天

    看一下现在的用户在线情况和群组情况 群组2中 cc dd用户均处于离线状态 aa,bb在线

    image-20240914151601575

    {"msgid":12,"id":1,"groupid":2,"groupmsg":"Hello,Everyone."}
    {"msgid":12,"id":2,"groupid":2,"groupmsg":"Hello,Everyone.I am bb"}

    aa、bb用户互相收到了消息,cc dd不在线,待接受信息保存在了 offlinemessage 离线表

    image-20240914151434248

文件布局

	bin/
|-- ChatServer          # 可执行文件 ChatServer
|-- ChatClient          # 可执行文件 ChatClient

src/
|-- client/             # 存放客户端相关源文件
|   |-- main.cpp
|   |-- CMakeLists.txt
|-- server/             # 存放服务器相关源文件
|   |-- db/             # 存放数据库增删改查代码源文件
|   |   |-- db.cpp      
|   |-- model/          # 存放数据库模型相关的源文件
|   |   |-- friendmodel.cpp 
|   |   |-- groupmodel.cpp 
|   |   |-- offlinemessagemodel.cpp
|   |   |-- usermodel.cpp
|   |-- redis/          # 存放与 Redis 相关的源文件
|   |   |-- redis.cpp
|   |-- chatserver.cpp 
|   |-- chatservice.cpp 
|   |-- main.cpp        # 服务器端主程序入口文件
|   |-- CMakeLists.txt
|-- CMakeLists.txt      # 项目的 CMake 构建配置文件

include/                # 存放项目的头文件,布局与 src 类似

text/                   # 存放测试用的代码文件

MySQL/					# 存放数据库样例文件

thirdparty/             # 存放第三方库
|-- json/               # JSON 库的头文件
|   |-- json.hpp
$ nano /etc/nginx/nginx.conf

MySQL常用指令

启动和停止MySQL服务

net start mysql // 启动mysql服务
net stop mysql // 停止mysql服务

MySQL的登陆和退出

  • MySQL登陆
mysql -u root -p
123456
  • MySQL登出
exit
quit

查��数据库

查询所有的数据库

SHOW DATABASES;

使用数据库

  • 使用数据库,SQL是区分大小写的!
USE DatabaseName;

查询表

  • 查询当前数据库下所有表名称
SHOW TABLES;
  • 查询表结构
DESC TableName;

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages