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

HTTP服务器项目

时间:2016-10-03 00:35:18      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:http

基于httpd的HTTP server

操作系统:CentOs 6.5

工具:Vim、gcc、g++、Makefile、Mysql


源代码:https://github.com/ZhaoGuanwen/HTTP-Server


主要工作流程:

技术分享


所有函数声明:

技术分享



main函数:

技术分享


当启动服务器时输入的参数(要绑定HTTP服务的ip地址,端口号)错误时,usage函数打印出正确方法。

技术分享


start_up()函数创建一个监听套接字,检测是否有新的请求。

技术分享


当接收到一个新的请求时,派生一个新的线程执行accept_request()函数去处理。

1. 调用get_line()函数提取请求行

2. 从请求行中提取请求方法、请求URL、请求资源的路径

3. 判断是否含有cgi程序

技术分享


get_line()函数读取sock中的一行数据(最大长度len)到line中。

技术分享



clear_header()函数清除剩余的头部信息。

技术分享


如果请求的资源存在并且是非cgi程序,echowww()将该资源发送给请求方。

技术分享


如果请求的资源是cgi程序,exec_cgi()函数运行cgi程序,并将运行结果发送给请求方。

技术分享


echo_errno()函数将错误码发送给请求方

技术分享


处理的错误码有400(Bad Request)、404(Not Found)、405(Method Not Allowed)、500(Internal Server Error)。

技术分享


Makefile:

技术分享


写一个简单的cgi程序测试。


math_cgi.cpp

技术分享

index.html

技术分享



技术分享

技术分享


本文出自 “zgw285763054” 博客,请务必保留此出处http://zgw285763054.blog.51cto.com/11591804/1858466

HTTP服务器项目

标签:http

原文地址:http://zgw285763054.blog.51cto.com/11591804/1858466

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