thttpd源代码阅读笔记 thttpd是一个非常小巧的轻量级web server,适合做嵌入式web服务器,它的官方网站是http://www./software/thttpd/ 。 在fedora 12下编译,有错误: 原因是getline 已加入 POSIX 2008,可以把extras/htpasswd.c 里面的getline重命名为get_line或别的。 代码根目录下,就这几个文件: extras子目录两个 main函数在 thttpd.c 编写守护进程(daemon)遵循的一般步骤: 除了上面所提的步骤,thttpd.c 跟其他服务器软件一样,解析参数,信号的处理,读取配置文件等。 Apache采用多进程模型响应用户请求,thttpd对并发请求不使用 fork()来派生子进程处理,采用IO多路复用解决方案。代码在fdwatch.c/h,对select()/poll()/kqueue()进行了封装,也加上了超时处理机制,跟Android RIL串口多路服用的代码非常相似。 至于socket网络编程,对HTTP/1.1协议的支持,都在libhttpd.c里面处理。 注意到了两个文本文件 mime_encodings.txt mime_types.txt,在Makefile.in里做处理,用sed格式化,生成mime_types.h,mime_encodings.h,在libhttpd.c中 再#include 进来,这是很常见的程序设计方法,好处就是修改方便,不容易出错。 If you enjoyed this post, make sure you subscribe to my RSS feed!
|
|