基于windows的,http 微型服务器的调试(适用于非网络工程师)

前言:
   本文所讨论的微型服务器,主要是针对http报文细节进行展开,通过解析http报文的请求,来实现Get 和Post方法。所以重点将在http报文的发送上展开。


调试方法:(由于本人在项目执行中,遇到的最头痛的问题就是如何调试,所以记录下这部分)

1.Get 方式(获取文件,页面等):

直接通过网址访问服务器,比如我的服务器地址是127.196.0.1,如果我想访问本电脑C盘下的test.jpg文件。

那么在浏览器输入:127.196.0.1/c:/test.jpg 即可。

这个时候浏览器发送的报文如下图(报文中Get  之前的 1 是控制台的调试输出信息,Get 之后为http报文):


图一

在http报文的起始行中有要请求的地址(请求url)(红线部分)。同过解析http报文便可获得该路径,也就可以通过fread读取文件,然后组合http响应报文通过socke发送该http包,当然该包不需要通过一次send就发送完毕。

2.post方式(上传文件):

(1)一般服务器的工作模式(本人不是很懂前台和后台服务,细节如有出入请谅解):

通过服务器的网址请求post(上传)页面:

假设请求的是以下页面upload.php的源码。





Insert title here

    
testupload.php" enctype="multipart/form-data" method="post">


该页面在浏览器中的显示:

                                              图三

那么当选择好文件并且submit(上传的时候),服务器就会去执行upload.php 文件中请求的testupload.php源代码。

我的理解,这个过程应该就是http 服务器的 标准CGI 实现方式。而本文说设计的微型服务器就是服务器去实现这些CGI,功能。

至于为什么要倒回去用服务器实现CGI,导致服务扩展不方便,主要是想在嵌入系统上使用服务器。

(这个时候浏览器发送的报文跟图一中的报文 主要的差别就在划红线处。)

(2)本服务的工作方式。

首先,请求页面,如图三(但是upload的源码红色字体的文字替换成“/cgi_modle/move.cgi”)。

然后上传,

报文头如下:


通过起始行的请求url 去执行不同服务。

所以发送post http报文只需upload.php的源码即可。

结束语:

至于其他方法,如何发送报文,不知。不过fiddler 可以模拟报文发送,当然这个需要自己编写报文(本人好像没实际用过,忘了)。

你可能感兴趣的:(基于windows的,http 微型服务器的调试(适用于非网络工程师))