应用层自定义协议

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

完。

相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
wuyk5553 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog3 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
琥珀色糖3 天前
SimlpeHttp
linux·服务器
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
第十人i3 天前
Linux 日志管理系统:journald 配置与优化
linux·服务器