Skip to content

Latest commit

 

History

History
41 lines (36 loc) · 1.33 KB

README.md

File metadata and controls

41 lines (36 loc) · 1.33 KB

simple_http_file_downloader

这个项目的来源是某个公司的校招笔试题 题目:开发一个 HTTP 下载服务器 要求

  1. 在 linux 中开发和运行
  2. 只允许使用 C 语言,不得使用 C++等其它语言
  3. 至允许使用 linux 提供的系统调用和库函数,不得使用其它第三方库
  4. 有配置文件
  5. 能够写日志
  6. 只需支持 HTTP GET 方法,其它方法返回 405 状态码即可
  7. 不需要支持 CGI
  8. 目录结构:
    bin 一存放可执行程序
    etc 一存放配置文件
    HTTP 下载服务器 log 一存放日志文件
    docroot 一存放用户可以下载的文件

提示:

  1. 采用多线程、epoll、cache 等技术来提高服务器对高并发的支持。
  2. 用 ab 进行压力测试,每秒请求次数越高则得分越高

使用 "ab" 来测试 GET 与 POST 请求:
GET 请求:
ab -n 100 -c 10 http://192.168.80.128:8000/670.jpg
ab -n 100 -c 10 http://192.168.80.128:8000/books.jpg
ab -n 100 -c 10 http://192.168.80.128:8000/home.html

POST 请求:
ab -n 100 -c 10 -p adcfg.json -T 'text/plain' http://192.168.80.128:8000/

在浏览器中按照如下格式输入进行测试:
GET 请求:
http://192.168.80.128/670.jpg
http://192.168.80.128:8000/books.jpg

TODO

  • threadpool 支持  
  • 简化代码  
  • 完善日志功能
  • CGI支持  
  • 其它HTTP Method