当前位置: 首页 > news >正文

网站图标添加郑州网站建设 推广

网站图标添加,郑州网站建设 推广,网站关键词部署,谷歌搜索入口365一、结构化数据传输流程 这里涉及协议定制、序列化/反序列化的知识 对于序列化和反序列化#xff0c;有现成的解决方案#xff1a;①json ②probuff ③xml 二、理解发送接收函数 我们调用的所有发送/接收函数#xff0c;根本就不是把数据发送到网络中#xff01;本质都是…一、结构化数据传输流程 这里涉及协议定制、序列化/反序列化的知识 对于序列化和反序列化有现成的解决方案①json ②probuff ③xml 二、理解发送接收函数 我们调用的所有发送/接收函数根本就不是把数据发送到网络中本质都是拷贝函数 Client - Servertcp发送的本质就是将数据从c的发送缓冲区拷贝到s的接收缓冲区 Client - Servertcp发送的本质就是将数据从c的发送缓冲区拷贝到s的接收缓冲区 每一端都有一套发送缓冲区/接收缓冲区 - tcp是全双工的 三、网络计算器流程 分析网络计算器的流程就可以理解协议定制、序列化/反序列化、协议报头的作用了 说明这里只谈论整体框架不会细说每个函数的实现想要完整代码的可以参考下面链接 https://gitee.com/peter-chen-cs/linux_learning_code.git 1.定制协议 #pragma once#include iostream #include string #include cstring #include sys/types.h #include sys/socket.h #include jsoncpp/json/json.h// 添加报头 std::string enLength(const std::string text) // 去掉报头 bool deLength(const std::string package, std::string *text)// 请求 class Request { public:// 构造函数Request()// 序列化bool serialize(std::string *out)// 反序列化bool deserialize(const std::string in)public:int _x;int _y;char _op; // _x _op _y };// 响应 class Response { public:// 构造函数Response()// 序列化bool serialize(std::string *out)// 反序列化bool deserialize(const std::string in)public:int _exitcode; // 0表示计算成功!0表示计算失败int _result; // 计算结果 };// 功能保证读到的数据是一个完整的报文 bool recvPackage(int sock, std::string inbuffer, std::string *text) 2.服务端 1calServer.hpp // 计算服务器-用于计算 class CalServer { public:// 构造函数CalServer()// 析构函数~CalServer(){}// 初始化计算服务器void initServer()// 启动计算服务器void start(func_t func){...handlerEntery(){func_t func()}...}private:int _listensock;uint16_t _port; };typedef std::functionbool(const Request req, Response resp) func_t; // 处理业务 // 放在这里是为了保证解耦 void handlerEntery(int sock, func_t func) {while (true){// 1.从应用层缓冲区读取一个完整报文// 2.对请求Request反序列化-得到一个结构化的请求对象// 3.计算处理 -- 逻辑业务得到一个结构化响应func(req, resp);// 4.对响应Response进行序列化-得到一个字符串// 5.添加包头发送响应} } 2calServer.cpp #include calServer.hpp #include memorybool cal(const Request req, Response resp) {// 请求已经是结构化数据了可以直接使用// 根据结构化请求完成计算// 构建结构化的响应 }int main(int argc, char *argv[]) {// 启动服务器unique_ptrCalServer tsvr(new CalServer(port));tsvr-initServer();tsvr-start(cal);return 0; } 3.客户端 1calClient.hpp class CalClient { public:// 构造函数CalClient(const std::string serverip, const uint16_t serverport)// 析构函数~CalClient(){}// 初始化客户端void initClient()// 启动服务端void start(){// 建立连接while (true){// 输入算式并将输入的字符串转化成Request-ParseLine()// 将Request序列化// 添加报头// 发送到服务器// --服务器处理完发回来了--// 读取一个完整的响应// 去掉报头// 反序列化得到Response}}// 把从键盘输入的算式转化成一个Request请求Request ParseLine(const std::string line)private:int _sock;std::string _serverip;uint16_t _serverport; }; 2calClient.cpp #include calClient.hpp #include memoryint main(int argc, char *argv[]) {// 启动客户端 } 4.整体调用逻辑
http://www.hkea.cn/news/14399626/

相关文章:

  • 电子商城网站开发教程win8metro ui风格的wordpress
  • 网页制作如何新建站点职业生涯规划大赛的意义
  • 网站建设与管理学什么网页数据抓取
  • 故城网站建设做情趣导航网站可以吗
  • 学院网站建设管理制度长沙市网页设计公司
  • 心理咨询网站建设做销售在哪些网站发贴
  • 做网站被骗了怎么办襄阳做淘宝网站推广
  • 做织带的网站wordpress html5 音乐
  • 福建省建设厅网站劳保核定卡网站制作行业越来越难做
  • 网站后台管理系统如何使用房地产政策最新消息2022
  • 龙岗爱联有学网站建设网站排名下降了怎么办
  • 网站管理 上传模板在线编辑
  • 大连个人做网站新手怎么做电商
  • 虚拟主机WordPress建站网页平面设计培训学校
  • 青园网站建设wordpress改变默认后台登录地址
  • 做网站网站需要多少钱网站推广的效果好
  • 给网站做优化刷活跃要收费吗品牌网站建设需要哪些规划
  • 网站制作咨询公司做资讯网站要什么手续
  • 一个商城网站开发要多少时间软件工程的定义
  • 贵州省住房和城乡建设部网站首页wordpress禁止留言网址
  • 查询网站空间商中国核工业第五建设有限公司怎么样
  • php建设网站后台有域名怎么建立网站
  • 外包网络推广公司推广网站免费的行情软件下载安装
  • 网站的涂鸦效果图怎么做的wordpress研究院
  • 学院招生网站建设方案外贸网站交易平台
  • 江苏省城乡建设厅网站无锡网站建设价格
  • 做衣服的网站推荐建设银行网银官方网站
  • 个人网站怎么备案做外包网站
  • 网站前台可以打开wordpress 本地视频插件安装
  • 耒阳网站建设包装设计网站设计平台