标签: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://zgw285763054.blog.51cto.com/11591804/1858466