应用层自定义协议

1.socket套接字封装--模板方法模式

就是子类调用父类的BuildListenSocket()函数,然后调用过程中会调用自己重写的SockOrDie!

服务器轮廓

2.自定义协议

轮廓--

继续完善服务器的内容

//服务器把任务交给上层协议来处理

接下来完善protocal协议模块内部处理方法就好了

Jsoncpp可以处理序列反序列化

1-完善序列化serizlize工作+读取完整性

2.完善Protocal模块的GetRequest方法

接下完善到计算模模块的任务处理方法

接下来客户端

守护进程化

改写我们的Daemon.hpp

改写main.cc

cpp 复制代码
#include"Netcal.hpp"//业务处理
#include"Protocal.hpp"//序列反序列,完整报文
#include "Tcpserver.hpp"//套接字
#include <memory>
#include"Daemon.hpp"
#include"Log.hpp"


//./tcpserver 8080
int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        std::cout << "你应该这样使用./tcpserver 8080" << std::endl;
        exit(USAGE_ERR);
    }

    std::cout<<"服务器启动,父进程将退出,子进程执行后续代码"<<std::endl;
    logger.SwitchFile();//文件方式显示日志!
    //守护进程化
    //子进程变成独立会话
    Daemon(1,0);
    LOG(LogLevel::INFO)<<"守护进程成功";//默认是向标准输出1里打印的,但我们重定向到文件里了dev/null

    //1.顶层
    std::unique_ptr<Cal> cal=std::make_unique<Cal>();

    //2.协议层
   
    std::unique_ptr<Protocal> protocal = std::make_unique<Protocal>([&cal]( Request req)->Response{
        //调用业务处理模块的方法
        return cal->Execute(req);
    });

    //3.服务层 --把任务交给上层协议来处理
    std::unique_ptr<TcpServer> tsvr=std::make_unique<TcpServer>(std::stoi(argv[1]),
        [&protocal](std::shared_ptr<Socket>& sock,InetAddr& client){
            protocal->GetRequest(sock,client);
    });

    tsvr->Start();

    return 0;
}

完。

相关推荐
Decay__8 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
anew___12 小时前
《从零手写操作系统 (63):安全与加固——从内核保护到沙箱隔离》
网络·安全
Lzg_na12 小时前
VXLAN:背景、机制、报文字段与主机转发流程
网络
天远API12 小时前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化
Android系统攻城狮13 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
乐维_lwops14 小时前
案例解读:大型综合性科创产业园运维监控落地实践
运维·网络·人工智能·安全·it监控·国产运维智能体
番茄啊15 小时前
linux 开启xftp连接
linux·运维·服务器
m0_7156744315 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
大数据·网络·人工智能·安全·网络安全·政务
IT利刃出鞘16 小时前
Docker Compose--解决修改配置后不生效的问题
运维·docker·容器
Lsetea16 小时前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书