Skip to content

1.局域网简易聊天服务端软件&客户端软件.2.采用基于陈硕muduo开源库修改的mymuduo开源库实现聊天客户端与聊天服务器的基于tcp/ip的网络通信.3.采用mysql c api在服务端作为后台mysql服务器的客户端使用后台mysql服务器的数据存储,数据检索,数据处理能力,来提供用户/聊天信息存储,信息处理,信息检索.

License

Notifications You must be signed in to change notification settings

xubenhao/ChatMe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatMe

软件运行界面&及功能展示

具体信息见https://github.com/xubenhao/ChatMe/wiki

如果上述网址无法显示图片,可参考

https://blog.csdn.net/x13262608581/article/details/113881265?spm=1001.2014.3001.5501

代码模块及其功能

1. 网络通信模块

网络通信模块采用我进行注释&说明,结构调整后的mymuduo库.

关于mymuduo库具体说明参考

https://github.com/xubenhao/MyMuduo

在ChatMe应用中

mymuduo库放在MyMuduo文件件,被客户端和服务器共同使用,来提供基于TCP/IP的局域网通信功能

2.MySql数据库访问模块

采用mysql提供的c api进行与mysql服务器的交互.

提供一个c++类MySqlAgent来封装对mysql提供的c api的使用

通过该类在服务端我们作为一个mysql客户端,使用后台mysql服务器提供的数据存储,数据检索,数据处理服务.

3.应用层通信协议设计

客户端到服务器方向会发出的消息目前有8种类别,每种类别及响应字节流打包/解包协议如下

a.注册

4字节长度+2字节消息类别+1字节用户id长度+用户id内容+1字节密码长度+密码内容

b.登录

4字节长度+2字节消息类别+1字节用户id长度+用户id内容+1字节密码长度+密码内容

c.添加好友

4字节长度+2字节消息类别+1字节添加方用户id长度+用户id内容+1字节被添加方用户id长度+用户id内容

d.获取好友列表

4字节长度+2字节消息类别+1字节用户id长度+用户id内容

e.离线

4字节长度+2字节消息类别+1字节用户id长度+用户id内容+8字节登录时间戳

f.获取需要处理用户列表

4字节长度+2字节消息类别+1字节用户id长度+用户id内容

g.聊天

4字节长度+2字节消息类别+1字节发送方用户id长度+用户id内容+1字节接收方用户id长度+用户id内容+聊天内容长度+聊天内容

h.获取客户间未被处理消息

4字节长度+2字节消息类别+1字节发送方用户id长度+用户id内容+1字节对端用户id长度+用户id内容

服务器到客户端方向会发出的消息目前有8种类别,每种类别及响应字节流打包/解包协议如下

a.注册回复

4字节长度+2字节消息类别+1字节注册结果

b.登录回复

4字节长度+2字节消息类别+1字节登录结果+8字节登录时间戳

c.添加好友回复

4字节长度+2字节消息类别+1字节添加结果

d.获取好友列表回复

4字节长度+2字节消息类别+1字节好友数量+1字节好友id长度+id内容[如此重复好友数量次,以发回所有好友信息]

e.获取需要处理用户列表回复

4字节长度+2字节消息类别+1字节好友数量+1字节好友id长度+id内容[如此重复好友数量次,以发回所有用户信息]

f.聊天回复

4字节长度+2字节消息类别+1字节聊天处理结果

g.新消息通知

4字节长度+2字节消息类别+1字节发送方用户id长度+用户id内容

h.得到客户间未被处理消息回复

4字节长度+2字节消息类别+2待处理消息数量+1字节消息方向+2字节消息长度+消息内容+8字节消息时间戳

[如此重复待处理消息数量次,以发回所有未处理消息]

实现技术&运行平台

1.客户端采用c++&qt基于linux平台实现,网络通信采用tcp/ip,采用基于陈硕muduo开源库修改调整而来的mymuduo实现与聊天服务器的网络通信

2.服务端采用c++&mysql c api基于linux平台实现,网络通信采用tcp/ip,采用基于陈硕muduo开源库修改调整而来的mymuduo实现与聊天客户端的网络通信

软件下载

  1. 服务端

https://github.com/xubenhao/ChatMe/releases/tag/1.00

服务端安装的说明

运行服务端软件的主机将成为整个聊天系统的服务器.

且服务端软件采用硬编码指定了采用地址为本机,用户名为muduoclient,密码为370970843的登录信息进行mysql客户端向mysql服务器的登录.

所以为了服务器能正常提供服务,需要在运行服务器的主机上提前安装mysql服务器,并创建一个用户名为muduoclient,密码为mysql的用户.

且在mysql服务器中基于muduoclient登录后,创建一个名为global的数据库.在其中创建一个user表.

采用create table user(id varchar(100), password varchar(100), primary key (id));

2.客户端

https://github.com/xubenhao/ChatMe/releases/tag/1.00

后期规划

可以基于目前已有功能进行继续开发的内容包括

1.优化聊天显示效果.可以采用自定义控件做到类似QQ聊天的文字显示效果.

2.支持文件传输.

3.支持发送表情

4.优化消息提示,可以采用自定义控件,采用闪烁方式进行新消息提醒

可能的不足

1.服务端对每个已经连接套接字发来的请求进行处理时,

在回调中执行处理,且处理过程会作为mysql客户端请求后台mysql服务器的服务.

由于mymuduo非阻塞I/O+消息循环的事件处理特点是,不要在事件处理中进行耗时较大的操作,

而mysql客户端到mysql服务器的请求处理以阻塞方式进行,在同时连入到服务器用户数量较大时,

可能因此导致单个客户请求响应延时变大.

About

1.局域网简易聊天服务端软件&客户端软件.2.采用基于陈硕muduo开源库修改的mymuduo开源库实现聊天客户端与聊天服务器的基于tcp/ip的网络通信.3.采用mysql c api在服务端作为后台mysql服务器的客户端使用后台mysql服务器的数据存储,数据检索,数据处理能力,来提供用户/聊天信息存储,信息处理,信息检索.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages