题
我需要建立一个简单HTTP服务器在C。任何指导?联系?样品?
其他提示
我建议您查看:编写客户端和服务器的实用指南
您必须在增量步骤中实施的是:
- 让您的基本TCP套接字层运行(侦听端口/端口,接受客户端连接并发送/接收数据)。
- 实施缓冲读卡器,以便您可以一次读取一行(由CRLF分隔)。
- 阅读第一行。解析方法,请求版本和路径。
- 为“Header:value”实现标头解析句法。不要忘记展开的折叠标题。
- 检查请求方法,内容类型和内容大小,以确定如何/是否将读取正文。
- 根据内容类型实现内容解码。
- 如果您要支持HTTP 1.1,请执行“100 Continue”,“keep-alive”,“chunked transfer”等内容。
- 添加健壮性/安全性措施,例如检测不完整的请求,限制最大数量的客户端等。
- 收缩包裹您的代码并开源:) 醇>
HTTP服务器是在概念上简单:
- 开口80听
- 当联系,收集一些信息(获得主要的-你可以忽略其余部分现在)
- 翻译的请求文件请求
- 打开文件,并把它吐回的客户
它变得更加困难,取决于有多少HTTP你想到支持后是有点复杂,脚本,处理多种请求,等等。
但基本是非常简单。
Mongoose (以前的简单HTTP守护程序)相当不错。特别是,它可以在Windows,Windows CE和UNIX下嵌入和编译。
在端口80上打开TCP套接字,开始侦听新连接,实施此一>。 根据您的目的,您可以忽略几乎所有内容。最简单的方法是,您可以为每个请求发送相同的响应,这只需要将文本写入套接字。
请看nweb(Nigel的Web服务器),“一个只有200行C源代码的小型,安全的Web服务器”:
https://drive.google.com/file/d/ 0B3msld7qnNOhN1NXaFIwSFU2Mjg /视图?USP =共享
http://www.ibm.com/developerworks/systems/library / ES-NWEB / 击>
这篇文章包括伪代码,解释和评论。
编辑:IBM的链接已经死亡。我已将网页的PDF保存到Google云端硬盘。这是代码下载:https://drive.google.com/file/d/ 0B3msld7qnNOhSGZGdDJJMmY0VHM /视图?USP =共享
@ ankushagarwal 做了一些更改,并在GitHub上传了他的版本: https://github.com/ankushagarwal/nweb
我写了自己可以使用的。这个工作有sqlite,是线程安全的,并且是用于UNIX的C ++。
您应该能够将其拆开并使用C兼容代码。
我建议查看 lighthttpd 等内容。
http://www.manning.com/hethmon/ - "插图指南由Paul S. Hethmon撰写的“HTTP”来自Manning是一本非常好的学习HTTP协议的书,对于实现它/扩展它的人来说非常有用。
使用特定于平台的套接字函数来封装HTTP协议,就像 Apache 背后的人一样