tinyhttp源码解析

本文介绍了作者对一个仅有500行代码的HTTP服务器tinyhttp的源码阅读和改造过程,包括修改Makefile适应现代系统,解决线程安全问题以及运行CGI脚本的尝试。此外,还分享了程序的基本流程,并提出了后续扩展计划,如增加HTTP方法支持、错误处理和基本认证。
摘要由CSDN通过智能技术生成

   今天无意中在github上面看到了一个只有500行的HTTP服务器,顿时来了兴趣,花了一点时间读完了代码,并且把程序下载下来运行了一下,感觉略微有点失望.代码其实挺简单的,应该非常适合刚看了点UNIX网络编程,想找个小项目练练手的同学.

   但是,我在编译程序的过程中却报了错,想想觉得不应该啊,但是一看到代码开头的注释才发现,这段程序是作者在1999年完成的,这十几年间,系统的API发生了一些变化,为了跟上时代的步伐,我把程序稍微修改了一下,更加适合现在的眼光.

   首先,要修改Makefile,将其中的gcc -W-Wall -lsocket -lpthread -o httpd httpd.c ,改成gcc -W -Wall -o httpd httpd.c -lpthread.我的系统是Ubuntu 14.04,还需要设置库的搜索路径,增加-L参数,这个根据各自的配置按需要添加.

 然后,需要将其中用到的accept,getsocketname函数的最后一个参数的类型改成socklen_t,原来的程序中用的是int.

 接着是pthread_create函数,现在要求这个函数的第三个参数,也就是新线程的执行函数是(void *)func(void *)类型,那么,就要将accept_request函数改成要求的类型.

  这里还有一个隐藏的bug,那就是由于要求的accept_request函数的参数是指针类型,那么,如果在一个连接到达后,调用新线程的accept_request函数之前,又有一个连接到达,由于参

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值