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

三屏合一网站建设天猫网站建设的意义

三屏合一网站建设,天猫网站建设的意义,专业手机网站怎么做,网站建设与管理的发展一、HttpResponse的定义 1.定义状态码枚举 // 定义状态码枚举 enum HttpStatusCode {Unknown 0,OK 200,MovedPermanently 301,MovedTemporarily 302,BadRequest 400,NotFound 404 }; 2.HTTP 响应报文格式 这个数据块主要是分为四部分 第一部分是状态行第二部分是响应…一、HttpResponse的定义 1.定义状态码枚举 // 定义状态码枚举 enum HttpStatusCode {Unknown 0,OK 200,MovedPermanently 301,MovedTemporarily 302,BadRequest 400,NotFound 404 }; 2.HTTP 响应报文格式 这个数据块主要是分为四部分 第一部分是状态行第二部分是响应头第三部分是一个空行第四部分是给客户端回复的数据块 // 定义响应的结构体 struct ResponseHeader {char key[32];char value[128]; };// 定义一个函数指针用来组织要回复给客户端的数据块 typedef void (*responseBody) (const char* fileName,struct Buffer* sendBuf,int socket);// 定义结构体 struct HttpResponse {// 状态行:状态码状态描述enum HttpStatusCode statusCode;char statusMsg[128];// 响应头 - 键值对struct ResponseHeader* headers;int headerNum;responseBody sendDataFunc;// 文件名char fileName[128]; }; 服务器回复给客户端的数据取决于客户端向服务器请求了什么类型的资源,有可能它请求的是一个目录,有可能请求的是一个文件,这个文件有可能是一个文本文件,也可能是一个图片,还可能是mp3...需要根据客户端的请求去回复相应的数据。所以如何去组织这个需要回复的数据块呢? // 定义一个函数指针用来组织要回复给客户端的数据块 typedef void (*responseBody) (const char* fileName,struct Buffer* sendBuf,int socket); fileName:分成两类,一类是目录类型,一类是非目录类型的文件 如果是目录就去遍历目录如果是文件就读取其内容 sendBuf:在进行套接字的通信过程中 如果要回复数据(给客户端发数据),发送的数据要先存储到sendBuf里边,再发送给客户端. socket:就是用来通信的文件描述符通过这个用于通信的文件描述符,就能够把写入到sendBuf里边的数据发送给客户端sendBuf里边的数据就是我们组织好的Http响应的数据块 定义一个函数指针用来组织要回复给客户端的数据块 responseBody sendDataFunc; 二、HttpResponse的初始化 // 初始化 struct HttpResponse* httpResponseInit(); #define ResHeaderSize 16 // 初始化 struct HttpResponse* httpResponseInit() {struct HttpResponse* response (struct HttpResponse*)malloc(sizeof(struct HttpResponse));// 状态行:状态码状态描述response-statusCode Unknown;bzero(response-statusMsg,sizeof(response-statusMsg));// 响应头 - 键值对int size sizeof(struct ResponseHeader) * ResHeaderSize;response-headers (struct ResponseHeader*)malloc(size);bzero(response-headers, size);response-headerNum 0;// 函数指针response-sendDataFunc NULL;// 文件名bzero(response-fileName,sizeof(response-fileName));return response; } 三、HttpResponse的销毁 内存释放 // 销毁 void httpResponseDestroy(struct HttpResponse* response); // 销毁 void httpResponseDestroy(struct HttpResponse* response) {if(response!NULL) {free(response-headers);free(response);} } 四、添加响应头 // 添加响应头 void httpResponseAddHeader(struct HttpResponse* response,const char* key,const char* value); // 添加响应头 void httpResponseAddHeader(struct HttpResponse* response,const char* key,const char* value){if(response NULL || key NULL || value NULL) {return;}strcpy(response-headers[response-headerNum].key,key);strcpy(response-headers[response-headerNum].value,value);response-headerNum; } 五、组织http响应数据 // 组织http响应数据 void httpResponsePrepareMsg(struct HttpResponse* response,struct Buffer* sendBuf,int socket); // 组织http响应数据 void httpResponsePrepareMsg(struct HttpResponse* response,struct Buffer* sendBuf,int socket) {// 状态行char tmp[1024] {0};sprintf(tmp,HTTP/1.1 %d %s\r\n,response-statusCode,response-statusMsg);bufferAppendString(sendBuf,tmp);// 响应头for(int i0;iresponse-headerNum;i) {// memset(tmp,0,sizeof(tmp)); ?????????sprintf(tmp,%s: %s\r\n,response-headers[i].key,response-headers[i].value);bufferAppendString(sendBuf,tmp);}// 空行bufferAppendString(sendBuf,\r\n);// 回复的数据response-sendDataFunc(response-fileName,sendBuf,socket); }
http://www.zqtcl.cn/news/577975/

相关文章:

  • 威海做网站网站建设方案书 模版
  • 泗阳做网站南昌建设
  • 做企业网站用什么软件深圳制作企业网站
  • 大连微信网站开发兰州网站建设模板
  • 建设项目安监备案网站外贸 网站 seo
  • 企慕网站建设网络推广合肥市网站制作
  • 做空比特币网站大气简约企业网站模板免费下载
  • 坪山网站建设行业现状做网站能月入10万
  • 个人网站有什么内容广西网站建设推广
  • 安徽教育云网站建设网站seo诊断的主要内容
  • 网站建设例子开发工具宏怎么使用
  • 新乡做网站公司哪个地区网站建设好
  • 网站模板怎么编辑网站定制化
  • 利于优化的网站网络科技公司怎么赚钱
  • 制作网站的步骤和方法做物流的网站有哪些功能
  • vs做网站图片明明在文件夹里却找不到中国建筑网官网找客户信息
  • WordPress仿站培训黑龙江新闻夜航
  • 如何利用开源代码做网站济南做网站互联网公司有哪些
  • 生意网app下载官网郑州做网站优化公
  • wordpress网站更换域名wordpress 小工具定制
  • 上海做机床的公司网站设计网站怎样做色卡
  • 一个网站怎么绑定很多个域名做网站后台应该谁来做
  • 跑纸活做网站加大门户网站安全制度建设
  • 多商户开源商城seo对网店的作用有哪些
  • 提供微信网站建设福州seo建站
  • 泉州市住房与城乡建设网站潍坊网站建设方案外包
  • 网络文化经营许可证怎么申请免费seo提交工具
  • 网站建设 需求分析报告手机网站微信网站开发
  • 做司法考试题目的网站建站中企动力
  • 做360网站优化ppt模板免费下载千图网