最精简的C语言HTTP开源库 -- tinyhttpd

这个库的实现,其最大的作用是告诉我们:HTTP协议本质上是一个文本协议,解析对方发来的内容的过程,其实是在做字符串匹配。

关键词:HTTP、多线程、多进程、CGI、

0.这个库写于1999年,那一年QQ才刚出现,可以说是祖师爷级别的网络库了。

1.这个库没有解析HTTP Header和Body,仅仅根据Request Method和Request URL来判断是调用CGI程序,还是返回文件内容。

2.这个库没有使用传输层的多路复用机制,而是每accept一个新连接就起一个新线程,这是Apache和MySQL早期的做法。

3.主进程与CGI子进程之间的通信使用了匿名管道,正好说明了“匿名管道”这种进程间通信机制存在的好处和历史原因。

4.那个时代的Web服务端编程范式就是CGI,收到一个HTTP请求就起一个CGI进程来响应。

5.CGI进程的输入是靠Shell环境变量,并包括:REQUEST_METHOD, QUERY_STRING, CONTENT_LENGTH等。

6.这个库非常简陋,很多HTTP功能都没有实现(包括keepalive、cookie、session、token等),但是它依然是一个可用的HTTP服务端。说白了,上述的那些HTTP功能,都可以通过解析HTTP Header、HTTP Body来实现。还是那句话,HTTP协议本质上是一个文本协议,怎么解析收到的内容,完全靠字符串匹配。并不像IP、TCP那样有固定的头部字段。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值