这个库的实现,其最大的作用是告诉我们:HTTP协议本质上是一个文本协议,解析对方发来的内容的过程,其实是在做字符串匹配。

关键词:HTTP、多线程、多进程、CGI、

0.这个库写于1999年,那一年QQ才刚出现,可以说是祖师爷级别的网络库了。

1.这个库没有解析HTTP Header和Body,仅仅根据Request Method和Request URL来判断是调用CGI程序,还是返回文件内容。

2.这个库没有使用传输层的多路复用机制,而是每accept一个新连接就起一个新线程,这是Apache和MySQL早期的做法。

3.主进程与CGI子进程之间的通信使用了匿名管道,正好说明了“匿名管道”这种进程间通信机制存在的好处和历史原因。

4.那个时代的Web服务端编程范式就是CGI,收到一个HTTP请求就起一个CGI进程来响应。

5.CGI进程的输入是靠Shell环境变量,并包括:REQUEST_METHOD, QUERY_STRING, CONTENT_LENGTH等。

6.这个库非常简陋,很多HTTP功能都没有实现(包括keepalive、cookie、session、token等),但是它依然是一个可用的HTTP服务端。说白了,上述的那些HTTP功能,都可以通过解析HTTP Header、HTTP Body来实现。还是那句话,HTTP协议本质上是一个文本协议,怎么解析收到的内容,完全靠字符串匹配。并不像IP、TCP那样有固定的头部字段。

最精简的C语言HTTP开源库 -- tinyhttpd相关推荐

  1. C语言使用开源库libusb进行USB设备操作

    文章目录 libusb官网 介绍 支持的平台 下载地址 使用测试 结果 函数列表 下载 参考 libusb官网 https://libusb.info/ 介绍 libusb is a C librar ...

  2. c# 对象json互相转换_Go语言进阶之路(六):内置JSON库和开源库gjson

    Go语言内置了部分JSON函数,可以方便地在Go语言结构体实例和JSON字符串之间互相转换.这可比Java强多了. 不过Go语言内置的json库功能比较鸡肋,只能在结构体和JSON之间相互转换,没办法 ...

  3. 基于Go的语义解析开源库FMR,“屠榜”模型外的NLP利器

    (由AI科技大本营付费下载自视觉中国) 作者 | 刘占亮 一览群智技术副总裁 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 如何合理地表示语言的内在意义?这是自然语言处理业 ...

  4. C/C++语言开源库

    C/C++语言开源库 Webbench Tinyhttpd cJSON CMockery Libev Memcached Lua SQLite UNIX v6 NETBSD 标准库 框架 人工智能 异 ...

  5. 【C/C++开源库】适合单片机/嵌入式的C语言单元测试库

    文章目录 一.为什么需要单元测试? 二.单片机/嵌入式中为什么很少听说单元测试? 三.Unity 什么是Unity 如何使用Unity 剖析Unity 四.单元测试究竟是什么?什么是适合单元测试的代码 ...

  6. android 开源图表动画,Android 图表开发开源库MPAndroidChart-Go语言中文社区

    上面是APP中实现的效果图(点击可以放大查看) 图1的效果不是用这个实现的,如果感兴趣可以参考我这篇文章  Android渐变圆环 总体来说,MPAndroidChart可能是目前Android 开发 ...

  7. 常用C/C++开源库

    1. 框架 Apache C++ Standard Library : 是一系列算法,容器,迭代器和其他基本组件的集合 ASL : Adobe源代码库提供了同行的评审和可移植的C++源代码库. Boo ...

  8. 走过19年,每年千万下载量,科学计算开源库SciPy的前世今生

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:机器之心 每年千万下载量,科学计算开源库 SciPy,你已经是个成熟的小伙伴了. ...

  9. GitHub 上排名前 100 的 Android 开源库介绍

    转自:http://www.codeceo.com/article/github-top-100-android-libs.html 本项目主要对目前 GitHub 上排名前 100 的 Androi ...

最新文章

  1. android proguard 第三方jar,Android Studio代码混淆-第三方jar混淆汇总(持续更新)
  2. [深度学习] 自然语言处理 --- 基于Attention机制的Bi-LSTM文本分类
  3. python 动漫卡通人物图片大全_用Python把人物头像动漫化,不同的表情给你不同的惊喜...
  4. 信息学奥赛一本通 2057:【例3.9 】星期几
  5. vue-router传参的坑(query和params)
  6. Python数据分析:pandas玩转Excel(三)
  7. 人脸识别技术场景应用
  8. 酷盘API C# 测试版
  9. 中心极限定理_达尔文的进化论正确吗?
  10. 我们为什么要骑驴找马?
  11. java数组排序(反转排序)
  12. Vue 按照创建时间和当前时间显示(刚刚,几小时前,几天前。。。)
  13. Android:获取当前的锁屏壁纸或桌面壁纸
  14. 资料:基于MPSOC XCZU15EG-2FFVB1156I 的PCIe FMC 光纤接口处理卡设计资料保存
  15. 递归算法之八皇后问题
  16. 木讷的程序员需要知道的事情 (六)
  17. 手机签到应用的设计与手机定位方法浅析
  18. 李沐动手学深度学习V2-注意力评分函数
  19. 问题 F: 解救小哈
  20. 数学建模之对策论/竞赛论/博弈论(Python)

热门文章

  1. java开发工程师面试题‘’_JAVA开发工程师面试题
  2. C/C++字符串操作的全面总结,值得收藏!
  3. 从《后浪》争议声中,看B站到底该如何出圈? | Alfred数据室
  4. 实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析
  5. you-get使用命令
  6. HTML 开发工具整理
  7. 现成掘金之旅APP系统开发案例分享
  8. VUE - 路由跳转时设置动画效果
  9. docker(二十二):docker加速器配置
  10. 想不想修真获取服务器配置文件,想不想修真常见问题解答汇总_想不想修真凡人传说_我爱秘籍...