C接下来的TinyHttpD

本文介绍了如何在Windows子系统Linux2(WSL2)环境下安装并运行TinyHttpD服务器,包括修改makefile、配置CGI脚本、设置文件权限等步骤,以实现动态内容生成。通过此过程,读者可以深入理解HTTP服务器的工作原理和CGI接口的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因:在看计算机网络时,刚好在Leetcode买了一本《网络是怎样连接的》,越发觉得要看协议的应用、server的实现。
过程:试过python的socket模块还有flask与django,由于语言太过于抽象(高级,不接近底层实现)而造成无法细致理解,故在code-sheep推荐下来读TinyHttpD,同时学习C\Cweb

环境:WSL-2下安装号各种C依赖
参考:https://blog.youkuaiyun.com/freedom1523646952/article/details/104281926 (“”Tinyhttpd实战一:设置虚拟机环境,运行Tinyhttpd“)

先跑起来
  1. 安装,包,当然gcc gbd build-essential

    sudo apt-get update
    sudo apt-get install geany
    sudo apt-get install make
    sudo apt-get install gcc
    
  2. 修改makefile文件(根部不懂、好好学一下吧)

    all: httpd client
    LIBS = -lpthread 
    httpd: httpd.c
    	gcc -g -W -Wall -pthread $(LIBS) -o $@ $<
    client: simpleclient.c
    	gcc -W -Wall -o $@ $<
    clean:
    	rm httpd
    
  3. htdocs中的cgi文件第一行的#!/usr/bin/perl -Tw 设为虚拟机上的perl位置(用which perl查询)
    比如我的就是 #!/usr/bin/perl

  4. 然后修改htdocs中文件权限

    cd htdocs
    
    sudo chmod 600 index.html  
    
    sudo chmod 764 color.cgi check.cgi  
    
  5. 而后在tinyhttpd目录下直接make
    如果出现make: Nothing to be done for `all’
    则make clean 而后再次make

  6. 运行 ./httpd
    最后在浏览器中输入localhost:端口号

  7. 用宿主的browser访问相应的 localhost 即可

    这样,WSL里的TinyHttpDServer就已经跑起来了

Day 2
tinyHttpd
  1. CGI本意是通用网关接口,实际上是一个生成响应内容的脚本程序。
    比如服务器接收到来自服务器的请求,它可以选择把请求传递给一个CGI程序,由它来根据请求生成内容,CGI程序把生成的内容返回给服务器,服务器再把这个内容返回给客户端。服务器程序只负责处理请求,不负责处理内容。
  2. 我们通过浏览器访问一个网站,会发送http请求给http 服务器,如果请求的是一个静态的页面或图片,服务器会直接返回结果给浏览器。但如果要完成一个动态的请求,比如需要查询数据库这样的操作,服务器会运行一个单独的程序来执行,这个程序处理完成后会把结果转化为服务器(或者浏览器)可以识别的格式输出。
  3. CGI现在很少使用了,目前主流的webserver技术大多基于JSP
  4. GCC 选项 -o
    用法:#gcc test.c -o test
    作用:将test.c预处理、汇编、编译并链接形成可执行文件Gtest。-o选项用来指定输出文件的文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值