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获取

 posted on 2016-04-27 21:50  Avery-Lyu  阅读(638)  评论(0编辑  收藏  举报