一个小而美的 C 语言项目

科技资讯 投稿 7100 0 评论

一个小而美的 C 语言项目

那么只是看书学习是不够的,还需要学习别人写的优秀代码,汲取优秀的代码逻辑和编程范式,并把他融入到自己的血液中,才能在编程这条路上不断进步。

tinyhttpd 的项目,这个项目想必大家学 C 的应该都听过,这是 J. David Blackstone 在 1999 年写的一个小型 HTTP 服务器的项目,用来学习非常不错,可以帮助我们真正理解服务器程序的本质以及 HTTP 的请求响应过程。大家可以去官网下载这个项目 http://tinyhttpd.sourceforge.net

https://github.com/EZLippi/Tinyhttpd 直接 fork 或者 clone。

本地自己搭了一台服务器,用的是 vmvare 和 Centos 7,vmvare 可以随处下载到,Centos 7 我给大家整理了一个下载链接 https://archive.kernel.org/centos-vault/ Centos 直达即可。

https://www.cnblogs.com/tanghaorong/p/13210794.html

https://www.cnblogs.com/DJOSIMON/p/14927176.html

自己搭建完服务器之后,我们就可以尝试着在 Linux 下先把这个 TinyHttpd 源码跑起来再研究其内部逻辑。clone 完整个项目后的项目框架如下,其中的 httpd.c 就是这个 HTTP 服务器的完整代码逻辑。

vi httpd.c 后可以发现,David 已经把 TinyHttpd 在 Linux 下的编译方式给我们写清楚了。

    注释掉 #include <pthread.h>,如下所示
  1. 注释掉定义在 newthread 变量的位置,在 main 函数中,如下所示
  1. 注释掉运行运行 pthread_create( 的位置,如下图所示
  1. 把注释掉的 accept_request(client_socket 函数放开
  1. 移除 Makefile 中的 -lsocket 选项,如下图所示

httpd.c文件了。

编译完成后会出现一个 httpd 文件,我们可以通过 ./httpd 来运行 httpd 程序,程序运行完成后会出现端口的绑定消息。

我是在 biying 上找到了一篇解决办法。

Perl 和 Perl-CGI,没有这俩的话,那你 CGI 就是无法展示。这在 github 上也有详细的说明。

yum install perl
yum install perl-cgi

安装完成后会有 Complete! 的提示,同时我们需要知道你的 perl 安装命令,可以使用

which perl

来查询。

htdocs 中,给 color.cgi 和 index.html 分别赋权限。

chmod -R 777 color.cgi 
chmod -R 666 index.html 

然后我们进入到 color.cgi 中,把开头中的 perl 安装位置改为你安装 perl 的位置,如下图所示

原文链接:小而美的项目

欢迎大家关注我的个人公众号:程序员cxuan

编程笔记 » 一个小而美的 C 语言项目

赞同 (30) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽