应用层自定义协议

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

完。

相关推荐
Geeys3 小时前
多多搜索操作指南|拼多多商家从 0 到 1 实操教程(自定义 + OCPX、选词、出价、投产优化)
大数据·网络·人工智能
Brookty3 小时前
网络原理|第一阶段:网络层、IP 数据报、网络接口与逐跳转发机制
网络·ip
倔强的石头1063 小时前
【Linux指南】进程通信系列(二):匿名管道 —— pipe 的本质、fork 继承与四种读写规则
java·linux·运维
Eloudy3 小时前
【无标题】
网络·gpu·rdma·roce
硅基手札3 小时前
【Linux 内核专栏 18】进程间通信 IPC(下)— Socket·Netlink·fd 三件套·futex·线程同步
linux·运维·驱动开发·单片机·嵌入式硬件·mcu·架构
吴佳浩 Alben3 小时前
一文看懂大模型推理为什么需要多卡:从 TP、DP 到 Runtime 的完整演进
运维·服务器·人工智能·深度学习·语言模型·vllm·sglang
djjjx.3 小时前
Linux进程篇(二):深入浅出 [进程概念与进程父子关系]:从底层原理到实战应用
linux·运维·服务器
爱喝水的鱼丶6 小时前
SAP-ABAP:S/4 HANA ABAP 新特性入门:与 ECC ABAP 的核心差异、架构优势与学习路径规划
运维·数据库·性能优化·sap·abap·hana·开发交流
AI日报派送佬11 小时前
2026年10月14日AI行业日报|Gemini 4 Argon正式发布;小模型跨设备传播风险引发安全热议
网络·人工智能·openai·谷歌·deepseek·anthropic·ai日报
鬼手点金12 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw