应用层自定义协议

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;
}

完。

相关推荐
行走__Wz1 分钟前
【网工入门-eNSP模拟-05】静态路由
网络
xiangw@GZ7 分钟前
802.11全系列标准调制编码与速率档对应关系
网络·单片机·嵌入式硬件·架构
迷糊小面包14 分钟前
Docker Hadopp集群版部署搭建及常规问题解疑
运维·docker·容器
茉莉玫瑰花茶17 分钟前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai
ShineWinsu20 分钟前
对于Linux:线程概念与分页存储管理的解析
linux·运维·服务器·面试·线程·进程·虚拟空间地址
器灵科技31 分钟前
AI视频工具实测:Seedance/可灵/HappyHorse谁最能打?
java·运维·数据库·人工智能·github
liulilittle1 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
烁3471 小时前
Docker
运维·docker·容器
IT WorryFree2 小时前
AsciiDoc + Antora开局
运维
网络中的夜鹰2 小时前
轩辕镜像一键安装Docker和Docker Compose脚本
运维·docker·容器