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

时间:2013-01-07 17:26:25

标签: c http webserver requirements

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

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

P.S。如果可能的话,我想从头开始构建它。

2 个答案:

答案 0 :(得分:6)

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

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

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

修改

在非常原始的层面上,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
}

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

答案 1 :(得分:2)

html,js,css和图像由浏览器处理。服务器只需提供内容。只要这不是它自己的动态就可以处理。剩下的故事与C语言没什么关系。