在C中构建HTTP服务器需要了解什么?

Ada*_*dam -1 c webserver requirements http

有人说,为了构建HTTP服务器,我应该遵循RFC 2616标准.哪个好,但作为一个全新的C开发人员,我想知道我需要使用哪些模块,技术来实现HTTP协议来处理html,css,js和图像.

我不是要重新发明井,我只需要一个学习C的起点.我的经验是,以项目方式构建有用的东西是学习新东西的最佳方式.

PS如果可能,我想从头开始构建它.

Rag*_*geD 6

HTTP服务器是一个简单的基于文本的服务器; 所有协议消息都以纯文本形式发送.此外,它是无状态的(即不需要记住任何有关先前连接的内容 - 处理每个请求,就好像它是一个新的请求).考虑到这些概念,您基本上需要了解如何socket programming工作(以及如何在C中很好地编程).套接字编程还取决于您使用的库(通常POSIX用于非Windows系统,否则WinSock2用于Windows).

其他功能(HTML,js等)由浏览器处理.服务器只是将数据发送到客户端(通常通过TCP,除非您也重新创建传输协议).

另外,可以说,套接字编程的最佳参考(在C和C++中)是Beej的指南

编辑

在非常原始的层面上,HTTP服务器的pseduocode如下所示:

while(1) {
  client = accept(); // Receive some connection
  recv(client, req); // Receive the request from the client
  // ... Do some HTTP request processing ...
  send(client, resp); // Send the client the response/data
}
Run Code Online (Sandbox Code Playgroud)

也就是说,我只是重新阅读你的帖子,也许,套接字编程不是学习C的最佳点.不是说它不能完成(我认为这是我开始的地方,虽然现在我看到更容易的路线) ,围绕语言和网络层来解决问题要困难得多.还有很多其他的东西需要创建以适应指针,内存管理,结构等的想法.您可以尝试创建简单的文件读取器/编写器来创建某种库存/计算脚本.我只是建议这些,因为套接字API看起来非常陌生,对于已经熟悉C的初次使用者.