【问题标题】:What do I need to know to build an HTTP server in C? [closed]在 C 中构建 HTTP 服务器需要了解什么? [关闭]
【发布时间】:2013-01-07 17:26:25
【问题描述】:

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

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

附:如果可能的话,我想从头开始构建它。

【问题讨论】:

标签: c http webserver requirements


【解决方案1】:

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

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

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

编辑

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

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 的最佳点。并不是说它不能完成(我认为这也是我开始的地方,尽管现在我看到了很多更简单的路线),但要同时考虑语言和网络层要困难得多。要习惯指针、内存管理、结构等的概念,还有许多其他的东西需要创建。您可以尝试创建简单的文件读取器/写入器,创建某种库存/计算脚本。我只是建议这些,因为对于已经熟悉 C 的初次使用者来说,套接字 API 看起来很陌生。

【讨论】:

    【解决方案2】:

    html、js、css 和图像由浏览器处理。服务器只需要交付内容。只要这没有它自己的动态,它就可以被处理。剩下的故事与 C 语言关系不大。

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多