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

网站建设栏目结构表个人网站有什么用

网站建设栏目结构表,个人网站有什么用,不同类型网站优势,备案后修改网站内容1. 再谈 协议 协议是一种 约定#xff0c;在读写数据时, 都是按 字符串 的方式来发送接收的. 但是这里我们会遇到一些问题#xff1a; 如何确保从网上读取的数据是否是完整的#xff0c;区分缓冲区中的由不同客户端发来的数据 2. 网… 1. 再谈 协议 协议是一种 约定在读写数据时, 都是按 字符串 的方式来发送接收的. 但是这里我们会遇到一些问题 如何确保从网上读取的数据是否是完整的区分缓冲区中的由不同客户端发来的数据 2. 网络版计算器 举例我们需要实现一个服务器版的加法器. 我们需要客户端把要计算的两个加数发过去, 然后由服务器进行计算, 最后再把结果返回给客户端 约定方案一: 客户端发送一个形如11的字符串; 这个字符串中有两个操作数, 都是整形; 两个数字之间会有一个字符是运算符, 运算符只能是 ; 数字和运算符之间没有空格; 结果不可取,无法判断从网上读取的数据是否是完整的 约定方案二: 定义结构体来表示我们需要交互的信息; 发送数据时将这个结构体按照一个规则转换成字符串这个过程叫做 序列化, 接收到数据的时候再按照相同的规则把字符串转化回结构体;这个过程叫做“反序列化” 自定义序列化反序列化 #includeiostream #includesys/socket.h #includesys/types.h #includenetinet/in.h #includearpa/inet.h #includestring #includememory #includeunistd.h using namespace std; #includehead.hpp class sock { public:sock(uint16_t port 8080):_port(port){}void Init(){fd socket(AF_INET,SOCK_STREAM,0);if(fd 0){cout socket fail endl;exit(1);}}void Bind(){sockaddr_in addr;addr.sin_family AF_INET;addr.sin_port htons(_port);addr.sin_addr.s_addr inet_addr(0.0.0.0);socklen_t len sizeof(addr);int n bind(fd,(struct sockaddr*)addr,len);if(n 0){cout bind fail endl;exit(2);}}void Listen(){int n listen(fd,0);if(n 0){cout listen fail endl;exit(3);}}void Accept(int client_fd){sockaddr_in addr;socklen_t len sizeof(addr);client_fd accept(fd,(struct sockaddr*)addr,len);if(client_fd 0){cout accept fail endl;}else{cout get a new link ... endl;}}int Connect(const uint16_t port,const string s){sockaddr_in addr;addr.sin_family AF_INET;addr.sin_port htons(port);addr.sin_addr.s_addr inet_addr(s.c_str());socklen_t len sizeof(addr);int n connect(fd,(struct sockaddr*)addr,len);if(n 0){cout connect fail endl;exit(4);}return fd;} private:int fd;uint16_t _port; }; #includestring string package(const string content) {//len\ncontent\nint n content.size();string s to_string(n);s \n;s content;s \n;return s; } string prase(string package) {//len \n content \nsize_t pos package.find(\n);if(pos string :: npos){return nullptr;}int len_package package.size();string l package.substr(0,pos);int len stoi(package.substr(0,pos));if(l.size() 2 len len_package){return nullptr;}string s;s package.substr(pos 1,len);package.erase(0,l.size() 2 len);return s;} struct protocol_client {protocol_client(int x 0,int y 0,char op ):_x(x),_y(y),_op(op){}string serialize(){// _x _op _ystring s;s to_string(_x);s ;s _op;s ;s to_string(_y);return s;}void deserialize(const string s){int left s.find( );if(left string :: npos){cout protocol_client : find fail endl;}int right s.rfind( );if(right string :: npos){cout protocol_client : find fail endl;}if(left 2 ! right){cout protocol_client : deserialize fail endl;return ;}_x stoi(s.substr(0,left));_y stoi(s.substr(right 1));_op s[left 1];}int _x;int _y;char _op; }; struct protocol_server {protocol_server(int result 0,int code 0):_code(code), _result(result){}string serialize(){//_result _codestring s;s to_string(_result);s ;s to_string(_code);return s;}void deserialize(const string s){size_t pos s.find( );if(pos string :: npos){cout protocol_client : find fail endl;}_result stoi(s.substr(0,pos));_code stoi(s.substr(pos 1));}int _code; int _result; }; #includeserver.hpp int main() {unique_ptrserver sv(new server());sv-start();sv-run();return 0; } #include sock.hpp #includeprotocol.hpp class server { public:server(){}void start(){svr.Init();svr.Bind();svr.Listen();}void run(){int client_fd;svr.Accept(client_fd);string e;while(true){//读端char buff[1024];ssize_t n read(client_fd, buff, sizeof(buff));if (n 0){cout server : read fail endl;}buff[n] 0;e buff;string s prase(e);protocol_client sv;sv.deserialize(s);//计算int result,code 0;switch(sv._op){case :result sv._x sv._y;break;case -:result sv._x - sv._y;break;case *:result sv._x * sv._y;break;case /:if(sv._y 0){code 1;}else{result sv._x / sv._y;}break;default:code 2;}protocol_server ss(result,code);s ss.serialize();s package(s);//写端n write(client_fd,s.c_str(),s.size());if(n 0){cout server : write fail endl;}}} private: sock svr; }; #includesock.hpp #includeprotocol.hpp void usage() {cout x y ? endl; }int main() {uint16_t port 8080;sock client;client.Init();int fd client.Connect(port,1.94.49.66);string e;while(true){usage();int x,y;char op;//写端cout please enter: x ;cin x;cout please enter: op ;cin op;cout please enter: y ;cin y;protocol_client sv(x,y,op);string s sv.serialize();s package(s);ssize_t n write(fd,s.c_str(),s.size());if(n 0){cout client : write fail endl;}//读端char buff[1024];n read(fd,buff,sizeof(buff));if(n 0){cout client : read fail endl;}buff[n] 0;e buff;s prase(e); protocol_server ss;ss.deserialize(s);cout result : ss._result code : ss._code endl;cout ------------------------------------------------------------- endl endl;}return 0; } json类 #includejsoncpp/json/json.h int main() {Json::Value root;root[x] 100;root[y] 200;root[op] ;root[dect] this is a oper;Json::FastWriter w;string res w.write(root);cout res endl;return 0; } Json::Value v; Json::Reader r; r.parse(res,v); int x v[x].asInt(); int y v[y].asInt(); char op v[op].asInt(); string dect v[dect].asString(); 3. HTTP协议 一认识 HTTP协议 应用层协议是我们程序员自己定的但实际上, 已经有一些现成的, 又非常好用的应用层协议, 供我们直接参考使用如 HTTP(超文本传输协议) 就是其中之一. 二认识URL 平时我们说 网址 就是URL 注意 像网站这种一般默认会添加协议方案名且协议方案名对应唯一一个端口号所以即使不写端口号也没关系如http 对应端口号 80https 对应端口号 443)web根目录不一定是linux系统下的根目录具体指什么完全由服务器那边解释 三urlencode编码 和 urldecode解码 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现 所以如果某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义. 转义的规则如下这个过程叫编码: 将需要转码的字符转为16进制然后从右到左取4位(不足4位直接处理)每2位做一位前面加上%编码成%XY格式 编码解码工具 URL 编码解码 - Codeeeee 在线小工具 4. HTTP协议格式 注意 上图对应格式是打印出来的格式实际上发送到网络上的是整个字符串是连在一起的http也是一种协议它也需要将数据序列化反序列化 代码 5. HTTP的方法 其中最常用的就是 GET方法 和 POST方法 注意 GET 方法 和 POST 方法都可以传参GET 方法的参数是在 url 内的,通过 url 提交的POST 方法的参数是在正文内POST 方法 比 GET 方法更加私密 GET 方法 POST 方法 6. HTTP的状态码 最常见的状态码, 比如 200(OK), 404(Not Found一般是客户端要访问的文件不存在), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway) 注意 3XX代表的重定向有两种一种是临时移动另一种是长期移动长期移动一旦设置了永久重定向所有后续对原始URL的请求都应该被自动转发到新的URL而且这个重定向是长期有效的临时移动表明资源的移动是暂时的。 客户端在接收到临时重定向响应后会临时使用新的URL但在将来的某个时间点对原始URL的请求可能会恢复为直接访问原始资源而不是被重定向 HTTP常见Header Content-Type: 数据类型(text/html等) Content-Length: Body的长度 Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上; User-Agent: 声明用户的操作系统和浏览器版本信息; referer: 当前页面是从哪个页面跳转过来的; location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问; Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能 注意 Content-Type 指明访问的路径是什么类型如.html : 网页 .jpg jpg格式的图片 .png png格式的图片 ...... )Cookie Cookie文件可能是内存级的储存在内存里也可能是文件级的储存在磁盘里 cookie文件的内容保存多久一般是由浏览器决定的如果内容没有了则下一次访问对应服务器仍要进行验证http协议默认是无状态的http对登入用户的会话保持功能 7. 长连接和短连接 即使是一个网页也可能包含很多元素每一个元素都要进行一次http请求,即建立一个tcp连接就会发生多个请求和响应这就是长连接只有一次请求和响应连接就断开的就是短连接
文章转载自:
http://www.morning.kqqk.cn.gov.cn.kqqk.cn
http://www.morning.ityi666.cn.gov.cn.ityi666.cn
http://www.morning.qynnw.cn.gov.cn.qynnw.cn
http://www.morning.yjknk.cn.gov.cn.yjknk.cn
http://www.morning.zgztn.cn.gov.cn.zgztn.cn
http://www.morning.fhkr.cn.gov.cn.fhkr.cn
http://www.morning.tsyny.cn.gov.cn.tsyny.cn
http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn
http://www.morning.ffmx.cn.gov.cn.ffmx.cn
http://www.morning.ykklw.cn.gov.cn.ykklw.cn
http://www.morning.jfcbs.cn.gov.cn.jfcbs.cn
http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn
http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn
http://www.morning.jgzmr.cn.gov.cn.jgzmr.cn
http://www.morning.qfkdt.cn.gov.cn.qfkdt.cn
http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn
http://www.morning.rqlf.cn.gov.cn.rqlf.cn
http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn
http://www.morning.symgk.cn.gov.cn.symgk.cn
http://www.morning.trqhd.cn.gov.cn.trqhd.cn
http://www.morning.rszt.cn.gov.cn.rszt.cn
http://www.morning.jmmz.cn.gov.cn.jmmz.cn
http://www.morning.nyfyq.cn.gov.cn.nyfyq.cn
http://www.morning.bzpwh.cn.gov.cn.bzpwh.cn
http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn
http://www.morning.ggfdq.cn.gov.cn.ggfdq.cn
http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn
http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn
http://www.morning.zympx.cn.gov.cn.zympx.cn
http://www.morning.tdcql.cn.gov.cn.tdcql.cn
http://www.morning.zmwd.cn.gov.cn.zmwd.cn
http://www.morning.xjmyq.com.gov.cn.xjmyq.com
http://www.morning.qrpdk.cn.gov.cn.qrpdk.cn
http://www.morning.yjdql.cn.gov.cn.yjdql.cn
http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn
http://www.morning.mrgby.cn.gov.cn.mrgby.cn
http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn
http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn
http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn
http://www.morning.fyzsq.cn.gov.cn.fyzsq.cn
http://www.morning.lprfk.cn.gov.cn.lprfk.cn
http://www.morning.hsklc.cn.gov.cn.hsklc.cn
http://www.morning.gjmbk.cn.gov.cn.gjmbk.cn
http://www.morning.rkqqf.cn.gov.cn.rkqqf.cn
http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn
http://www.morning.lnyds.cn.gov.cn.lnyds.cn
http://www.morning.mlycx.cn.gov.cn.mlycx.cn
http://www.morning.qieistand.com.gov.cn.qieistand.com
http://www.morning.bpmnj.cn.gov.cn.bpmnj.cn
http://www.morning.lnbcx.cn.gov.cn.lnbcx.cn
http://www.morning.spfq.cn.gov.cn.spfq.cn
http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn
http://www.morning.hprmg.cn.gov.cn.hprmg.cn
http://www.morning.jrlgz.cn.gov.cn.jrlgz.cn
http://www.morning.pxlsh.cn.gov.cn.pxlsh.cn
http://www.morning.incmt.com.gov.cn.incmt.com
http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn
http://www.morning.jmmz.cn.gov.cn.jmmz.cn
http://www.morning.cszbj.cn.gov.cn.cszbj.cn
http://www.morning.bykqg.cn.gov.cn.bykqg.cn
http://www.morning.qfwfj.cn.gov.cn.qfwfj.cn
http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn
http://www.morning.skdrp.cn.gov.cn.skdrp.cn
http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn
http://www.morning.twdwy.cn.gov.cn.twdwy.cn
http://www.morning.rkkh.cn.gov.cn.rkkh.cn
http://www.morning.ygflz.cn.gov.cn.ygflz.cn
http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn
http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn
http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn
http://www.morning.tqpnf.cn.gov.cn.tqpnf.cn
http://www.morning.dnbkz.cn.gov.cn.dnbkz.cn
http://www.morning.kszkm.cn.gov.cn.kszkm.cn
http://www.morning.mrncd.cn.gov.cn.mrncd.cn
http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn
http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn
http://www.morning.zcwwb.cn.gov.cn.zcwwb.cn
http://www.morning.wflpj.cn.gov.cn.wflpj.cn
http://www.morning.jntcr.cn.gov.cn.jntcr.cn
http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn
http://www.tj-hxxt.cn/news/271942.html

相关文章:

  • 一个网站怎么做聚合肇庆cms建站系统
  • 怀化人社网站网站速度慢如何做优化
  • 淘客软件自动做网站?白杨seo
  • 国外好的网页设计网站优化网站建设
  • 海南专业网站开发公司广州科技公司有哪些
  • 做网站后台运营这个工作怎么样wordpress付费注册插件
  • 手机网站模板演示网站搭建技术有哪些
  • 手机登录不了建设银行网站wordpress单栏极简
  • 网站备案号 脱离服务商河南零距离文化传播 网站建设
  • 重庆市城市建设档案馆官方网站现在一个天猫店要多少钱
  • 合肥网站推广 公司哪家好抚养网站建设
  • 泉州制作手机网站工程建设与设计期刊网站
  • 郑州企业网站制作南宁网站建公司
  • 自己做电影网站joomla建站教程
  • 池州专业网站建设设计本官方网站案例
  • 郑州营销型网站推广工具网站卖了对方做违法
  • 免费设计海报的网站怎么让百度收录
  • 为什么做网站更新如何做网站推广的策略
  • 申请网站域名空间企业网站的功能主要有
  • 做新闻门户网站需要什么免费的简历模板
  • 超凡网络网站注册小规模公司需要什么资料
  • 做网站有年费吗软件开发软件定制
  • 中文html5网站欣赏文章采集网站
  • 电子商务网站与建设课件网站pv访问量统计怎么做
  • wordpress 零售电商宁波网站排名优化
  • 郑州网站建设市场登录我的企业邮箱
  • 全球顶尖设计网站西部网站建设
  • 中国建设银行安徽省 招聘信息网站网上怎么推广产品
  • 企业网站功能报价个人主页网站制作
  • 手机自建网站平台企业网站剖析