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

时间: 2024-12-20 01:18:46

HTTP服务器项目的相关文章

TengineWeb服务器项目

Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验.它的最终目标是打造一个高效.稳定.安全.易用的Web平台.    从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它.Tengine团队的核心成员来自于淘宝.搜狗等互联网企业. 以下沿引项目主页上的特性介绍:    继承Nginx-1.2.8的所有特

基于多线程的TCP服务器项目【开源】

本文提供一个完整的TCP Server实例,包括动态连接库.单元测试.验收测试.Winform模拟测试.供新手学习,还望老手多提意见. 项目地址:https://tcpserversocket.codeplex.com/ (可直接Download项目工程) 系统结构 项目文件如下: TcpServerSocket:项目核心动态链接库,如果在别的项目中使用,只用引用该项目生成的DLL即可: WindowsFormsApplication1:一个简单的winform应用程序,让你快事了解如何在Win

服务器项目绑定码云仓库

服务器项目中安装git yum install -y git 查看git版本 git --version 增加远程仓库 git remote add origin [email protected]:sunguiming/weixin.git 尝试拉取代码 git pull origin master 报错 报错原因:没权限 执行下面命令: $ ssh -v [email protected] 配置github.com上的ssh keys 之后能正常pull 正常push 可以通过git bra

linux 中文件权限和磁盘管理、linux服务器项目如何部署

chmod chmod 421 xx.txt //4=r,2=w,1=x df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 df常用参数有 –i -h -k –m等 -i 使用inodes 显示结果 -h 使用合适的单位显示,例如G -k -m 分别为使用K,M为单位显示 du 用来查看某个目录所占空间大小 语法:du [-abckmsh] [文件或者目录名] 常用的参数有: -a:全部文件与目录大小都列出来.如果不加任何选项和参数只列出目录(包含子目

svn检出服务器项目中出现的could not connect to server

今天来新同事,新配的电脑装上SVN,Myeclipse后,检出服务器的项目老是出现文件不存在,could not connect to server.最后上网搜了下, 1.先用电脑ping服务器,看网络是否有问题(我同事就是电脑WIFI自动连的不知是哪的,ping不通服务器). 2.再检查防火墙是否关闭.(不知道有没有关系,网上有人这么说) 3.如果是第一次用svn检出的话,会出现让你输入用户名密码,结果同事输入后,依然无法检出.最后在服务器的SVN上面发现,检出项目必须在服务器的SVN中添加该

服务器项目目录搭建,gradle 搭建项目web目录,source folder,folder相互转换,部署路径配置,

奶奶的,搞了一天,用maven还好,一建自动生规范的项目目录,这个gradle在网上看的例子五花八门.跟建的都不一样,一气之下研究到底,这下想怎么变就怎么变了! 以下几个操作让你随便改项目转变!最只要把src 和build.gradle相关配置搞到服务器上就可以了,其他都可以随便配的 以下这张图,是以前公司svn目录,只要src代码 跟maven pom, 在eclipse下,package,source folder,folder都是文件夹. 它们的区别如下: package:当你在建立一个p

记一次工作中was服务器项目目录权限被收回

状况描述:启动was服务器的时候报错,提示让去查看服务器的启动的日志 1.cd 进到nodgent 目录下哎 less 查看日志2.观察到 某个文件不能被delete.3.查看到项目目录的权限为root,而当前使用的账户权限为低一级的权限,造成启动的时候该目录wasadmin的文件不能被删除.4.su 进入到管理员权限 5.给was服务器赋操作启动目录的权限,目录假设为wasadmin6.执行 chown -R liuhai:liuhai /wasadmin7.su wasadmin8.ques

GIT服务器项目部署和自动同步

1.1.初始化Git仓库首先我们选定一个目录作为Git仓库,假定是/home/data/share/share.git,在/home/data/目录下输入命令: $ cd /home/data/ $ mkdir share $ chown git:git share/ $ cd share $ git init --bare share.git Initialized empty Git repository in /home/data/share/share.git/ 以上命令Git创建一个空

[视频教程]利用SSH隧道进行远程腾讯云服务器项目xdebug调试

我的远程服务器是腾讯云的ubuntu系统机器,本地我的电脑系统是deepin的系统,使用的IDE是vscode.现在就来使用本地的IDE来调试腾讯云中为网站项目实现逻辑是访问网站域名后,请求被转发给腾讯云本地的9001端口,通过ssh隧道,会直接被转发给deepin本地系统的9001端口.vscode会监听9001端口接收到腾讯云传递过来的请求,进入断点调试模式,结束后会把请求返回给腾讯云,腾讯云继续处理请求 首先安装必须的扩展 1.IDE中安装扩展PHP Debug,直接安装就行 2.腾讯云中

web网站阿里云服务器项目部署

项目部署 基于ubuntu 16.04系统,使用 Gunicorn + Nginx 进行布署 阿里云服务器控制台:https://www.aliyun.comhttps://ecs.console.aliyun.com/#/home 1.进入控制台,查看实例创建情况 2.给安全组配置规则,添加5000端口(一并加上5001端口) 3.利用命令行进行远程服务器登录 ssh 用户名@ip地址 相关环境安装 以下操作都在远程服务器上进行操作 (ubuntu 16.04) 1)先更新 apt 相关源 s