【发布时间】:2008-10-06 22:10:24
【问题描述】:
我需要用 C 语言构建一个简单的 HTTP 服务器。有什么指导吗?链接?样品?
【问题讨论】:
标签: c httpserver
我需要用 C 语言构建一个简单的 HTTP 服务器。有什么指导吗?链接?样品?
【问题讨论】:
标签: c httpserver
我建议你看看:A Practical Guide to Writing Clients and Servers
您必须以增量步骤实施的是:
【讨论】:
我建议你看看tiny httpd。如果您想从头开始编写它,那么您需要彻底阅读RFC 2616。使用BSD sockets 访问非常低级别的网络。
HTTP 服务器在概念上很简单:
这取决于您想要支持多少 HTTP 变得更加困难 - POST 稍微复杂一些,脚本、处理多个请求等等。
但是基础很简单。
【讨论】:
Mongoose(以前的简单 HTTP 守护程序)非常好。特别是,它可以在 Windows、Windows CE 和 UNIX 下嵌入和编译。
【讨论】:
在端口 80 上打开一个 TCP 套接字,开始监听新连接,实现this。 根据您的目的,您可以忽略几乎所有内容。最简单的情况是,您可以为每个请求发送相同的响应,只需将文本写入套接字。
【讨论】:
看看 nweb(Nigel 的 Web 服务器),“只有 200 行 C 源代码的小型、安全的 Web 服务器 [...]”:
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing&resourcekey=0-ngY0neP78dxJKlFv0PJoDQ
http://www.ibm.com/developerworks/systems/library/es-nweb/
文章包括伪代码、解释和 cmets。
编辑:IBM 的链接已失效。我已将网页的 PDF 保存到 Google Drive。下面是代码下载:
@ankushagarwal 做了一些更改,并将他的版本上传到了 GitHub: https://github.com/ankushagarwal/nweb
【讨论】:
我自己写了你可以使用的。这个作品有 sqlite,是线程安全的,并且是 C++ for UNIX。
您应该能够将其拆开并使用与 C 兼容的代码。
【讨论】:
我建议查看lighthttpd 之类的来源。
【讨论】:
http://www.manning.com/hethmon/ -- Manning 的“Illustrated Guide to HTTP by Paul S. Hethmon”是一本非常好的学习 HTTP 协议的书,对实现/扩展它的人非常有用。
【讨论】:
使用平台特定的套接字函数来封装 HTTP 协议,就像 Apache 背后的人所做的那样。
【讨论】:
有一个duplicate with more responses。
尚未提及的候选人是spserver。
【讨论】: