1.前言:
1)tinyhttpd是一个500行+的http服务器
2)支持迭代和多线程并发两种服务器模型
3)支持GET和POST方法
4)支持CGI(fork、execl方式)
5)虽然响应的http版本是1.1,但实际不符合http/1.1标准(仅从没实现HEAD方法可知,具体参考RFC文档)
2.概述:
1)tinyhttpd自定义了12个函数:
void accept_request(int); void bad_request(int); void cat(int, FILE *); void cannot_execute(int); void error_die(const char *); void execute_cgi(int, const char *, const char *, const char *); int get_line(int, char *, int); void headers(int, const char *); void not_found(int); void serve_file(int, const char *); int startup(u_short *); void unimplemented(int);
2)具体执行流程如下(迭代型与多线程型进行的循环和逻辑类似,均循环执行accept_request,因此下图不作区分)
2*)以下为单个循环的执行逻辑(省略常规系统调用)
3.源码请到github获取