http协议解析程序

http协议解析程序

ID:27565913

大小:47.50 KB

页数:7页

时间:2018-12-03

http协议解析程序_第1页
http协议解析程序_第2页
http协议解析程序_第3页
http协议解析程序_第4页
http协议解析程序_第5页
资源描述:

《http协议解析程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、今天完成了所有的开发工作,很高兴,我的服务器软件中支持断点续传,流媒体播放,CGI网关编程接口,虚拟冃录设置,GET和POST请求.回头想想这近两个月的开发过程很有意思.应该总结一下,以便以后再用.Http又叫超文本传输协议,是我们目前应用最为广范的应用层协议.它结构合理,不保持连接状态.http的会话方式为客户机/服务器模式,客户机首先与服务器建立连接,这是一条TCP连接,端LJ号默认为80,然后生成请求信息,这个请求格式应遵循HTTP协议规范.服务器端解析到來的请求,分析客户的意图生成对应的返回信息,发送到对方,断开连接,完成本次会话.Http中主要

2、有两种请求方式,一是GET也是最常用的,二是POST请求,适用于大数据量的传输.GET请求主要是请求文档,各种格式的文件,还有就是调用服务器端CGI应用程序,传送少量的参数信息,可以理解成GET的主要功能是获取而不是给予.与此相对应的是POST则是相反.是对本地数据的提交.下面举一个例子,来看一下GET的请求格式:GET/index.htmHTTP/1.1Host:localhostAccept:*/*User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0;.NETCLR1.1.4322)Refere

3、r:http://localhost/last.txtPragma:no-cacheCache-Control:no-cacheConnection:close这是一个获取服务器端index.html这个文件的请求.下面的是一些相关的本次请求的客户机信息.比如HOST是指主机IP,Referer是指从那里进行定位过来的等等.要想开发服务器端软件就要解决HTTP协议中客户机请求的解析.如何解析这个请求呢,下面就是答案:首先为了开发方便,我设计了一个数据类型structHttpHeaderstringmethod;stringprotocol;float1h

4、ttpver;stringuseragent;stringdate;stringpath;stringconnection;stringifmodifiedsince;stringlastmodified;stringeTag;intcontenttype;/*Content-Type:*/intrangeflag;DWORDrangestart;DWORDrangeend;DWORDrangetotal;longcontentlength;stringaccept;stringhost;stringacceptlanguage;stringaccept

5、encoding;stringreferer;这个数据类型中基本上包括了HTTP协议中的常用的字段信息,我们的想法是写一个解析程序,让客户机的请求按其前面的字段顺次写到我们这个数据类型中,便于下一步的工作.解析函数如下.voidprocess(char*requestBuf)//requestBuf为一数据区,里面放了客户机全部的请求信息.HttpHeader*header=newHttpHeader();chargetURL[1024];charmethod[200];charprotocol[200];if(sscanf(requestBuf,”%s

6、%s%s",method,getURL,protocol)!=3){deleteheader;returnresponseError400,header3pClient);}urlDecode(getURL,getURL);header->path=strdup(getURL);header->method=method;header-〉protocol=protocol;/////////////////////////////////////////////////////////stringpost=’’’’;if(strcmp(header-〉m

7、ethod.c_str(),’’POST”)==0){intlength=strlen(requestBuf);inttcount=length;length—;while(requestBuf[length]!=’-’){length—;}length+=10;while(length<=tcount){post+=requestBuf[length-1-4-];}cout«’’POST:H«post.c_str()«endl;}////////////////////////////////////////////////////////////ch

8、ar*ENDOFLINE=nrn;if(strchr(requestBuf

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。