主要是基于Epoll的聊天服务器,兼容cpp11标准
类的关系如下
主要分为两层,网络层和业务层
网络层的核心是EventLoop,负责统领消息的收发
业务层的核心是MsgHandler,负责处理消息,因为是demo,所以比较简单
通过线程安全消息队列MQ,起两个专门用于收发的线程
接收消息的线程与Epoll搭配使用,解包后,根据类型转化成不同的Message,然后将接收的消息预处理之后,加入接收消息队列
这里的预处理主要是对登陆和心跳包进行处理,用于维护长连接
发送消息的线程不断循环检测发送消息队列,封包后,以二进制形式传输
MsgHandler负责所有消息的分发处理,现目前demo阶段,处理直接就在这个类中完成
根据维护的长连接,进行检测是否活跃,并将消息发送
这里如果对方不在线,可以扩展功能,将消息持久化进数据库,用户上线后拉取
基于封装的Socket和兼容cpp11的路径处理FileUtils来实现文件传输
后续可以实现断点续传功能
ConsoleUI.hpp作为客户端的控制台ui,
NetworkClient.hpp作为客户端与服务端沟通的桥梁
其他代码直接复用服务端的代码