【开源之Tinyhttpd】初识Tinyhttpd

开源开源,说好的开源就要从今天开始了。首先从一个简单的开始:Tinyhttpd。

Tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有500多行,附带一个简单的Client,可以通过阅读这段代码理解一个Http Server的本质。

源码下载地址:https://github.com/EZLippi/Tinyhttpd

另附一个可以参考的博文:【源码剖析】tinyhttpd —— C 语言实现最简单的 HTTP 服务器


直接编译报错,需要修改下 Makefile:

all: httpd client
LIBS = -lpthread #-lsocket
httpd: httpd.c
	gcc -g -W -Wall $^ -o $@ $(LIBS)
client: simpleclient.c
	gcc -W -Wall $^ -o $@
clean:
	rm httpd

其实就是修改了下顺序。。。然后 make 成功。



参照 main -> startup -> accept_request -> execute_cgi  顺序阅读代码,在通晓主要工作流程后再仔细把每个函数的源码看一看。



1、首先是 main 函数,该函数是服务器端的常规代码,创建一个用来监听的 sockfd。在监听的过程中每建立一个连接,就创建一个线程去处理。

int main(void)
{
    int server_sock = -1;
    u_short port = 4000;
    int client_sock = -1;
    struct sockaddr_in client_name;
    int client_name_len = sizeof(client_name);
    pthread_t newthread;

    /*在对应端口建立 httpd 服务*/
    server_sock = startup(&port);
    printf("httpd running on port %d\n", port);

    while (1)
    {
        /*套
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值