当前位置:  开发笔记 > 编程语言 > 正文

在C中构建一个简单的HTTP服务器

如何解决《在C中构建一个简单的HTTP服务器》经验,为你挑选了8个好方法。

我需要在C中构建一个简单的HTTP服务器.任何指导?链接?样品?



1> Ates Goral..:

我建议你看一下:编写客户端和服务器的实用指南

您必须在增量步骤中实现的是:

    让您的基本TCP套接字层运行(侦听端口/端口,接受客户端连接并发送/接收数据).

    实现缓冲读取器,以便您可以一次读取一行(由CRLF分隔)的请求.

    阅读第一行.解析方法,请求版本和路径.

    实现"Header:value"语法的头解析.不要忘记展开的折叠标题.

    检查请求方法,内容类型和内容大小,以确定如何/是否将读取正文.

    基于内容类型实现内容的解码.

    如果您要支持HTTP 1.1,请执行"100 Continue",keep-alive,chunked transfer之类的操作.

    添加健壮性/安全性措施,例如检测不完整的请求,限制最大数量的客户端等

    收缩包装你的代码并开源它:)



2> Adam Rosenfi..:

我建议你看一下微小的httpd.如果你想从头开始编写,那么你需要彻底阅读RFC 2616.使用BSD套接字以非常低的级别访问网络.


现在不要阅读[RFC 2616](http://tools.ietf.org/html/rfc2616),它已被废弃:[RFC 7230](http://tools.ietf.org/html/rfc7230),[ RFC 7231](http://tools.ietf.org/html/rfc7231),[RFC 7232](http://tools.ietf.org/html/rfc7232),[RFC 7233](http:// tools. ietf.org/html/rfc7233),[RFC 7234](http://tools.ietf.org/html/rfc7234),[RFC 7235](http://tools.ietf.org/html/rfc7235)
或者使用inetd并跳过网络部分.
`tiny httpd`也在github上:https://github.com/larryhe/tinyhttpd

3> Adam Davis..:

HTTP服务器在概念上很简单:

打开端口80进行收听

联系时,收集一些信息(主要是 - 你现在可以忽略其余的)

将请求转换为文件请求

打开文件并将其吐回客户端

根据您希望支持多少HTTP,它会变得更加困难 - POST有点复杂,脚本,处理多个请求等等.

但基础非常简单.



4> Bob Nadler..:

Mongoose(以前简单的HTTP守护进程)非常好.特别是,它可以在Windows,Windows CE和UNIX下嵌入和编译.



5> Eclipse..:

在端口80上打开TCP套接字,开始侦听新连接,实现此功能.根据您的目的,您可以忽略几乎所有内容.最简单的方法是,您可以为每个请求发送相同的响应,这只需要将文本写入套接字.



6> XP1..:

看看nweb(Nigel的Web服务器),"一个只有200行C源代码的小型,安全的Web服务器":

https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing http://www.ibm.com/developerworks/systems/library/es-nweb/

该文章包括伪代码,解释和注释.

编辑:IBM的链接已经死亡.我已将网页的PDF保存到Google云端硬盘.这是代码下载:

https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing

@ ankushagarwal做了一些修改,并在GitHub上传了他的版本:https: //github.com/ankushagarwal/nweb



7> Daniel A. Wh..:

我写了我自己的,你可以使用.这个工作有sqlite,是线程安全的并且在C++ for UNIX中.

您应该能够将其拆开并使用C兼容代码.

http://code.google.com/p/mountain-cms/



8> Omer van Klo..:

当我不得不做我的作业时,HTTP规范和Firebug对我非常有用.

祝你好运.:)

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有