Coder Social home page Coder Social logo

git-test-copy's Introduction

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服务器的请求处理以阻塞方式进行,在同时连入到服务器用户数量较大时,

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

git-test-copy's People

Contributors

fragrant-yang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.