本文的重点是介绍HTTP服务器的框架结构,旨在了解HTTP服务器的工作流程,所以我们在下面我们会实现一个多线程的HTTP/1.0版本服务器,这个HTTP服务器主要支持GET和POST方法。
在实现HTTP服务器之前,我们首先要了解HTTP协议,CGI协议等:
http协议
一、web框架的原理图
如果使用非CGI方式处理浏览器的请求的话很简单,服务器直接将浏览器请求的资源返回即可。下面给出CGI方式为浏览器服务的框架:
二、多线程http服务器工作方法
1、http/1.0版本的服务器采用的是短连接。
我们要搭建的是多线程服务器,并且使用短连接,所以每当建立一个连接之后,就创建一个线程去处理这个请求,并将这个线程设置成分离状态,然后主线程继续处于监听状态。当线程处理完这个请求之后,然后断开连接。这样一来一回就处理完一个请求。
2、实现支持GET和POST方法的小型http服务器。
GET方法:如果GET方法只是简单的请求一份资源,而不传递参数的话则由服务器直接将资源返回即可。如果GET方法的url中带有参数的话,则就要使用CGI模式进行处理。
POST方法:POST方法要使用CGI模式进行处理。POST的参数在消息正文中出现。