有人说为了构建HTTP服务器,我应该遵循RFC 2616标准。哪个好,但作为一个全新的C开发人员,我想知道我需要使用哪些模块,技术来实现HTTP协议来处理html,css,js和图像。
我不是要重新发明井,我只需要一个学习C的起点。我的经验是,以项目方式构建有用的东西是学习新东西的最佳方式。
P.S。如果可能的话,我想从头开始构建它。
答案 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语言没什么关系。