目录
一、前言
QQ和微信是现代人们生活中必不可少的一部分,身边几乎很难找到人不使用QQ或者微信等聊天工具吧!那么你想要亲手打造一款属于自己的聊天系统吗?那么让我们一起打造出一款自己专属的应用吧。
二、产品的介绍
1.产品具有的功能
该聊天系统具有,登录,注册,添加好友,发送消息,四大功能。
2.产品的各个模块
3.使用的开发工具以及应用的技术
a.开发工具:VS2019,MFC
b.使用的技术:Socket编程,TCP网络通信,多线程,数据库,Json数据格式
三、产品的设计
1.服务端
1.1服务端总流程图
1.2数据库及其管理模块设计
数据库表:因为我们需要保存用户以及用户好友的信息,所以我们至少需要维护两个数据库表
friendInfo:保存用户好友信息的数据库表
user:保存用户信息的数据库表
1.3用户管理模块设计
1.5消息的操作
消息类型和响应类型
enum chat_msg_type{
Register = 0, //0, 注册请求
Register_Resp, //1, 注册应答
Login, //2. 登录请求
Login_Resp, //3, 登录应答
AddFriend, //4, 添加好友请求
AddFriend_Resp, //5, 添加好友请求应答
SendMsg, //6, 发送消息
SendMsg_Resp, //7, 发送消息应答
PushMsg, //8, 推送消息
PushMsg_Resp, //9, 推送消息应答
PushAddFriendMsg, //10, 推送添加好友请求
PushAddFriendMsg_Resp, //11, 推送添加好友请求的应答
GetFriendMsg, //12, 获取全部好友信息
GetFriendMsg_Resp, //13, 获取全部好友信息应答
SetUserOffLine //14
//后续如果要增加业务, 可以在后面增加其他的消息类型
};
enum reply_status{
REGISTER_SUCCESS = 0, //0, 注册成功
REGISTER_FAILED, //1,注册失败
LOGIN_SUCESSS, //2, 登录成功
LOGIN_FAILED, //3, 登陆失败
ADDFRIEND_SUCCESS, //4, 添加好友成功
ADDFRIEND_FAILED, //5, 添加好友失败
SENDMSG_SUCCESS, //6, 发送消息成功
SENDMSG_FAILED, //7, 发送给消息失败
GETFRIEND_SUCCESS, //8,获取好友列表成功
GETFRIEND_FAILED //9, 获取好友列表失败
};
消息类型的格式
/*
* 注册请求的消息格式
* sockfd_ (消息达到服务端之后, 由服务端接收之后, 打上sockfd_)
* msg_type_ : Register
* json_msg: {
* nickname : 'xxx'
* school : "xxx"
* telnum : "xxxx"
* passwd : "xxxx"
* }
*
* 注册的应答:
* msg_type_ : Register_Resp
* reply_status_ = REGISTER_SUCCESS / REGISTER_FAILED
* 如果是REGISTER_SUCCESS : [user_id_]
*
*
*
* 登录的请求消息格式
* sockfd_ (消息达到服务端之后, 由服务端接收之后, 打上sockfd_)
* msg_type_ : Login
* json_msg_ : {
* telnum : xxx
* passwd : xxx
* }
*
* 登录的应答:
* msg_type : Login_Resp;
* reply_status_ : LOGIN_SUCCESS/LOGIN_FAILED
* 如果是LOGIN_SUCCESS : [user_id_]
*
*
*
* 添加好友请求:
* msg_type_ : AddFriend
* json_msg_ :{
* fri_tel_num : xxxx
* }
*
*
* 推送添加好友的请求
* msg_type : PushAddFriendMsg
* sockfd_ : 被添加方的套接字描述符
* json_msg_: {
* adder_nickname : xxx
* adder_school : xxx
* adder_userid : xxx
* }
*
* 推送添加好友的应答(被添加方发送给服务端的)
* msg_type : PushAddFriendMsg_Resp
* user_id : 被添加方的id
* reply_status : ADDFRIEND_SUCCESS / ADDFRIEND_FAILED
* 如果说是ADDFRIEND_SUCCESS
* json_msg_ : 添加方的id
*
* 添加好友的应答:
* msg_type: AddFriend_Resp
* reply_status : ADDFRIEND_FAILED / ADDFRIEND_SUCCESS
* 如果是成功:ADDFRIEND_SUCCESS
* json_msg_ :
* BeAdd_nickname : 被添加方的名字
* BeAdd_school : 被添加方的学校
* BeAdd_userid : 被添加方的id
* */
2.客户端
客户端使用VS2019的MFC功能创建的
四、产品的测试(视频演示)
TCP聊天系统测试