一个简单的http服务器的实现 含源代码
来源:互联网 发布:中文域名交易平台 编辑:程序博客网 时间:2024/06/05 05:26
EasyHttp 最简单的http服务器
说明:
这是一个C语言编写的http服务器简单实现,使用python语言作为cgi程序处理用户的表单输入。通过这个项目有利于理解http服务流程,以及多线程调试等诸多知识点。
使用方法:
- 平台:centos7 编译器:gcc 4.8.4
- 下载项目,修改htdocs目录下easycgi.py 的运行权限 chmod
- cd EasyHttp && make && ./httpd
- 可以通过修改 index.html 表格中的请求方式来测试get post方法
- 建议初学者通过逐步调试的方式学习代码,每个函数都有详细的注释哦~
流程:
- 代理发送过来请求,服务器建立client_sock套接字,创建进程处理请求 accept_request
- 逐行从套接字中读取http请求报文,判断请求类型 GET \ POST 判断 url 根据url上的参数读取服务器上的文件或者准备执行cgi文件
- 根据具体的方法 将参数存储到 meth_env (putenv)中
- 创建子进程执行cgi程序,父进程通过管道向子进程传入数据,从管道读取子进程输出的数据 父子进程通信示意图如下
- 该服务器采用python编写cgi程序
注意:
- strlen 与 sizeof的区别 如果send中使用 sizeof 很有可能由于缓冲区被占满导致 send 被阻塞
- 用户的代理(浏览器)会检查http的响应报文格式,所以http服务器返回的报文一定要严格按照要求编写
项目地址:https://github.com/hunterzhao/EasyHttp 如果对您有帮助请给我点star哦 :)
测试:
- 浏览器第一次请求到页面
- 浏览器提交用户的输入,并返回执行结果
参考:
- http 请求报文 与 响应报文
- GDB 调试多进程方法
- python cgi编写方法
0 0
- 一个简单的http服务器的实现 含源代码
- 一个简单的http服务器的实现
- C#实现一个简单的HTTP服务器
- C#实现一个简单的HTTP服务器
- #实现一个简单的HTTP服务器
- Python 实现一个简单的http服务器
- C#实现一个简单的HTTP服务器
- Python 实现一个简单的http服务器
- Python 实现一个简单的http服务器
- 实现一个简单的http服务器
- Python 实现一个简单的http服务器
- 一个简单的Http服务器
- 一个简单的HTTP服务器
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 发布一个超级mini的ajax源代码(含简单框架)
- 实现一个最简单的HTTP服务器(version2.9)
- 【Node.js】实现一个最简单的HTTP服务器
- 第7周-项目2-友元类
- myeclipse编码问题
- nyoj 1091 还是01背包
- ios修改导航栏的title的文字颜色
- unity图片打成图集后图片变模糊
- 一个简单的http服务器的实现 含源代码
- Tyvj_P1007
- 字符串全排列
- 62. Unique Paths
- 151. Reverse Words in a String
- 创建一个ActionSheet
- 第6周项目1-分数类的雏形(3)
- Oracle之BBED之BBED的编译及简单设置(一)
- 利用DOM和SAX解析XML文档