为了真正理解服务器程序的本质,基于Tinyhttp服务器的基础上,实现了一个多线程http/1.0版本的小型http服务器,本文将从以下几方面介绍:
(1)实现http服务器的预备知识;
(2)模式处理;
(3)多线程http工作的方法流程;
(4)代码实现。
(注:http/1.0版本的服务器采用的是短连接,即请求-响应-断开)
1.在实现http服务器之前,我们首先要了解HTTP协议,CGI协议等;
(1)这里我找到两篇http协议详解写的真是不错,下面是它们的链接:
http协议详解(真的很牛逼)
http协议详解
(2)CGI协议
定义:
Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。
留言本的工作是这样的:先由用户在客户端输入一些信息,如评论之类的东西。接着用户按一下“发布或提交”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后CGI程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结