建设厅官方网站,石大远程在线考试 《网页设计与网站建设》,天津市建设网官网,wordpress添加字体gitee仓库#xff1a;https://gitee.com/WangZihao64/linux/tree/master/CalTcp
一、重谈协议 协议是一种“约定”#xff0c;这种约定是双方都知道的。有了一致的约定#xff0c;双方才能够正常地进行通信。协议在网络的第一篇博客中也提到过#xff0c;协议是双方进行通…gitee仓库https://gitee.com/WangZihao64/linux/tree/master/CalTcp
一、重谈协议 协议是一种“约定”这种约定是双方都知道的。有了一致的约定双方才能够正常地进行通信。协议在网络的第一篇博客中也提到过协议是双方进行通信的基础在网络通信中存在着各种协议有了这些协议网络的通信才能够正常运转。 这次写一个网络计算器我们分为几步
客户端向服务端发送一个请求数据包服务端将请求数据包进行解析并且进行业务处理然后返回一个响应数据包给客户端客户端将响应数据包进行解析得到计算结果
客户端将请求封装成一个数据包该过程叫做序列化服务端将请求数据包进行解析的过程叫做反序列化。目前市面上有json、xml等格式都可以供程序员进行该操作。
协议定制以及序列化和反序列化
请求数据包用一个结构体进行封装里面有两个操作数和一个操作符响应数据包也用一个结构体进行封装里面有计算结果和状态码
class Response
{
public:Response():_exitcode(0),_result(0){}Response(int exitcode,int result):_exitcode(exitcode),_result(result){}//结构化-exitcode resultbool serialize(string* str){*str;
#ifdef MYSELFstring s1to_string(_exitcode);string s2to_string(_result);*strs1;*strSEP;*strs2;
#elseJson::Value root;root[exitcode]_exitcode;root[result]_result;Json::FastWriter writer;*strwriter.write(root);
#endifreturn true;}//”exitcode result“ - 结构化bool deserialize(const string str){
#ifdef MYSELFauto midstr.find(SEP);if(midstring::npos){return false;}string num1_stringstr.substr(0,mid);string num2_stringstr.substr(midSEP_LEN);if(num1_string.empty()||num2_string.empty()){return false;}_exitcodestoi(num1_string);_resultstoi(num2_string);
#elseJson::Value root;Json::Reader reader;reader.parse(str,root);_exitcoderoot[exitcode].asInt();_resultroot[result].asInt();
#endifreturn true;}int _exitcode; //0计算成功 !0表示计算失败int _result; //计算结果
};如果你仔细看了之前的文章那么这次新增的部分就在这里通常情况下序列化和反序列化不需要我们自己做这里做只是让读者更加了解何为序列化整体代码请看我上面放出的gitee链接
二、HTTP协议
介绍
HTTP协议是Hyper Text Transfer Protocol超文本传输协议的缩写本质是基于TCP协议来进行文本设置完成协议通信。HTTP协议支持客户端——服务端模式也就是请求与响应模式且客户端需要以浏览器的方式访问服务端。 URL
统一资源定位符Uniform Resource Locator给互联网上的每一个文件资源都贴上这样一个唯一标签并且包含了资源位置信息和访问方式浏览器可以通过URL中的文件位置信息找到对应的资源文件。 协议方案名 发起请求用到的协议登录信息 登录认证是用的的信息通常被忽略服务器地址 访问资源所在的服务器的地址也就是域名字符串风格的端口号 服务器绑定的端口号文件路径 访问资源在目标服务器上的位置信息查询字符串 查询信息片段标识符 对某些资源信息的描述与补充
http request/response
http响应格式和请求格式http已经为我们设置好了 http长连接
我们看到的网页实际上可能由多种元素构成一张完成的网页需要多次http请求浏览器进行组合与渲染所以网页有100张图片我们得请求http 100次如果频繁发起http请求会导致频繁创建连接的问题需要client和server都要支持长连接所谓长连接就是建立好一条连接获取大份资源的时候通过一条连接完成请求报头Connection选项就是关于长连接的
http会话保持
会话保持严格意义上不是http天然具备的http协议是无状态的即不会记录历史记录所输入的状态信息简单说如果没有会话保持我们登陆一个网站以后网页发生跳转就需要重新登陆但如果有了会话保持就不需要了
那么是如何做到的呢Cookie技术它分为文件级别和内存级别有的网页关闭了下次登陆你的账号还在就是文件级别的如果下次登陆它就不在了那么就是内存级别的也有可能是对方设置了缓存的时间超过这个时间就会重新缓存 三、HTTPS https协议是在http协议的基础上多了一个加密层