- 1.清除
build和bin旧文件 - 2.自动编译生成新文件
./mk.sh- 成功编译在
bin下生成新ChatServer执行文件 - 客户端登录服务器
./ChatServer- 开启监听客户端连接
telnet 127.0.0.1 6000- 使用
zhang的账号来注册,客户端键入
{"msgid":3,"name":"demo","password":"123456"}- 使用
zhang的账号来登录,客户端键入
{"msgid":1,"id":1,"password":"123456"}- 使用两个账户登录聊天服务器
{"msgid":1,"id":1,"password":"123456"}
{"msgid":1,"id":2,"password":"123456"}- 发送消息
{"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!」
- 离线消息存储入
offlinemessage数据库
id=5用户登录,id=1发来的离线消息被成功推送,底层数据库offlinemessage清空
id=1添加id=2为好友
{"msgid":6,"id":1,"name":"Jiao","friendid":2}id=1再次登录时,返回id=1好友信息
- Mysql底层
friend变动
-
创建群组
有
id = 1用户创建Mass Fortune群组名,描述It is just a test{"msgid":8,"id":1,"groupname":"Mass Fortune","groupdesc":"It is just a test"} -
加入群组
{"msgid":10,"id":2,"groupid":2} {"msgid":10,"id":3,"groupid":2} {"msgid":10,"id":4,"groupid":2} -
群组聊天
看一下现在的用户在线情况和群组情况 群组2中 cc dd用户均处于离线状态 aa,bb在线
{"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离线表
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.confnet start mysql // 启动mysql服务
net stop mysql // 停止mysql服务
- MySQL登陆
mysql -u root -p
123456
- MySQL登出
exit
quit
查询所有的数据库
SHOW DATABASES;
- 使用数据库,SQL是区分大小写的!
USE DatabaseName;
- 查询当前数据库下所有表名称
SHOW TABLES;
- 查询表结构
DESC TableName;












