码迷,mamicode.com
首页 > Web开发 > 详细

Tiny HTTPd 开源web服务器搭建过程及简要分析

时间:2015-07-26 21:08:20      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

开源web服务器,Tiny HTTPd,纯c编写,作者:   jdavidb。服务器小巧,轻便,结构简单,将搭建web服务器的原理阐述的很清楚,对学习很有帮助。下载地址


测试环境:Ubuntu 14.04.2

由于服务器不是默认为linux开发的,所以需要经过简单的修改才能在linux上运行起来。

1、修改Makefile文件,将gcc -W -Wall -lsocket -lpthread -o httpd httpd.c

修改为:gcc -W -Wall  -o httpd httpd.c -lpthread。(删除-lsocket,linux下不需要 -lsocket。将-lphtread放到最后,在网上查找得到的结果是-lphtread不能放在 -o 前面,具体原因目前未知)

其实在源代码httpd.c里面,介绍了在linux系统上编译时,需要修改的地方,(还是要仔细阅读源代码)。

2、htdocs文件夹下,有两个cgi脚本文件,用于此服务器的响应,用perl语言编写,由于机器默认perl安装位置不同,所以需要修改为本机的perl地址。

经过两处修改,make 后, 服务器即可成功搭建起来。


服务器有三种交互方式:

1、直接输入ip:port地址,服务器打开存在htdocs文件夹下的index.html文件,在收入框内输入一种颜色,如red或0 0 0 ,index.html调用color.cgi脚本,显示该颜色。

2、可直接访问htdocs文件夹下脚本,如ip:port/color.cgi,默认为蓝色,或另一个脚本文件index.html/check.cgi。

3、可直接访问htdocs文件夹下文件,如ip:port/README,将打印该文件。


总结:

1、name.sin_port = htons(*port)

此处若*port为0,则系统会随机分配端口号

2、name.sin_addr.s_addr = htonl(INADDR_ANY);

INADDR_ANY:此处表示任意IP地址,若服务器有多块网卡,多个IP地址,通过几个IP地址+端口均可访问服务器

3、newline 即 linefeed: 换行符  LF \n 换到下一行的当前列

carriage return 回车符 CR \r 回到当前行的起始位置

4、strcasecmp忽略大小写比较字符串是否相等,isspace判断字符是否为空字符,为空则返回true


Tiny HTTPd 开源web服务器搭建过程及简要分析

标签:

原文地址:http://my.oschina.net/u/2313065/blog/483912

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!