lwip1.4.0之http server实现及POST 实现.docx

lwip1.4.0之http server实现及POST 实现.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lwip1.4.0之http server实现及POST 实现

lwip1.4.0之http?server实现及POST?实现?一、HTTP?SERVER的实现?lwip默认的http?server?在?apps/httpserver_raw?主要核心文件为?fs.c?fs.h(读取相关html相关资源),?httpd.c?httpd.h?httpd_structs.h?为http协议核心文件?首先在LWIP协议栈正常运行后?需要在main函数中调用httpd_init()?初始化Http?正常情况下般还需要实现SSI和CGI回调函数的初始工作?本人写在一个函数中?如下:void?http_start(void){?http_set_ssi_handler(SSIHandler,?g_pcConfigSSITags,?sizeof(g_pcConfigSSITags)/sizeof?(char?*));?http_set_cgi_handlers(g_psConfigCGIURIs,?sizeof(g_psConfigCGIURIs)/sizeof(tCGI));}然在httpd_init()下调用http_start()?完成初始化SSI和CGI的工作。?其次?要使用makefsfile.exe?对网页进行编译?这个小工具可以从网上下载一个,?本人将编译命令写在一个makefsfile.bat批处理文件中?每次编译只要运行一下makefsfile.bat?具体命令如下:?echo?offmakefsfile?-i?web_pages?-o?../lwip-1.4.0/src/apps/httpserver_raw/fsdata.h?-r?-hecho?on?其中?web_pages为所包含的网页文件夹?产生的网页数据放在fsdata.h中?用于跟工程文件一起编译,?-r?表示每次编译网页时重写fsdata.h?-h?表示产生的网页数据中不包含http协议头部?因为本人在HTTP中使用的是动态产生HTTP协议头。?至此?网页完成?在浏览器中敲入板子的IP地址?便可以看到网页了?二、POST方案实现LWIP?HTTP?协议中默认只支持GET方法?但是一般提交表单时都用POST方法?而LWIPPOST方案需要自己实现?不过LWIP已经需要实现的函数申明在httpd.h中了首先将宏?LWIP_HTTPD_SUPPORT_POST?设置成1?表示支持HTTP?POST?方法,?需要实现的函数分别为:?httpd_post_begin(当接收到一个POST请求时会调用此函数),?httpd_post_receive_data(接收HTTP?POST?数据),?httpd_post_finished(接收完成后?调用此函数)具体实现如下:err_t?httpd_post_begin(void?*connection,?const?char?*uri,?const?char?*http_request,?u16_t?http_request_len,?int?content_len,?char?*response_uri,?u16_t?response_uri_len,?u8_t?*post_auto_wnd){#if?LWIP_HTTPD_CGI?int?i?=?0;#endifstruct?http_state?*hs?=?(struct?http_state?*)connection;???if(!uri?||?(uri[0]?==?\0))?{?return?ERR_ARG;?}??hs-cgi_handler_index?=?-1;???//?此变量为本人自己在struct?http_state?添加?用于保存CGI?handler?索引?为-1表示无CGI?handler索引?hs-response_file?=?NULL;?//?此变量为本人自己在struct?http_state?添加?用于保存?CGI?handler?处理完后返回的响应uri.?#if?LWIP_HTTPD_CGI??if?(g_iNumCGIs??g_pCGIs)?{?for?(i?=?0;?i??g_iNumCGIs;?i++)?{?if?(strcmp(uri,?g_pCGIs[i].pcCGIName)?==?0)?{??hs-cgi_handler_index?=?i;?//?找到响应的?CGI?handler?将其保存在cgi_handler_index?以便在httpd_post_receive_data中使用?break;?}?}?}???if(i?==?g_iNumCGIs)?{?return?ERR_ARG;?//?未找到CGI?handler??}#endif??return?ERR_OK;}?#

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档