应用层自定义协议

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

完。

相关推荐
凤舞飘伶7 分钟前
服务器内存满日常运维命令
linux·运维·服务器
西柚小萌新8 分钟前
【论文阅读】--AgentPoison:通过投毒记忆库或知识库对LLM智能体进行红队测试
网络·安全
Fcy64843 分钟前
Linux下 Socket编程 —— TCP网络编程
linux·网络·tcp/ip
IPdodo_1 小时前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试
ouynagda1 小时前
HTTP协议与Socket网络编程笔记
网络·笔记·http
haerapi1 小时前
流式对话接口怎么选:SSE 与 WebSocket 的原理、实现和工程边界
网络·websocket·网络协议
砚凝霜2 小时前
【软考信息安全】第二章 网络攻击基础与常见技术方法
网络·安全·php
Raas1002 小时前
AI网关在架构中的位置?MAI Gateway(魔芋企业级AI网关)给出企业级答案
大数据·网络·人工智能·架构·gateway·ai网关·mai gateway
hflmwl82 小时前
Motrix电脑版官网免费下载,motrix服务器绿色版官方下载安装
运维·服务器·motrix
2401_868534782 小时前
安全管理策略和制度
网络·安全