c++ - 如何在 linux 上用 C/C++ 编写 Web 服务器

标签 c++ c linux

我正在考虑在 linux 平台上开发一个小型(阅读:初级)网络服务器,但我不知道从哪里开始。

我希望它能够做的是:

  • 监听特定端口
  • 接受 HTTP 发布并获取请求
  • 适当回应
  • 无需 session 管理
  • 必须使用 C 或 C++
  • 必须在启动时作为服务运行

我熟悉 HTTP header ,并且是一位经验丰富的 PHP 和 .Net Web 开发人员,但我不知道从哪里开始这项任务。

你能告诉我一些资源来弥补学习曲线吗?

最佳答案

从上到下,您需要了解:

  • HTTP 协议(protocol)
  • TCP 服务器 - BSD 套接字编程
  • 编写一个基本的 Unix 守护进程(持久服务)
  • 进程管理( fork )
  • 解析文本(读取配置文本文件)
  • 文件处理 (I/O)
  • 调试 C/C++ 编程:)

因此,您必须学习编写基本的 Unix 应用程序、用于 TCP/IP 网络编程的 BSD 套接字编程以及 HTTP 协议(protocol)。

常用的文字有:

Unix 应用开发:

  • Unix 环境中的高级编程,Stevens & Rago
  • 高级 Unix 编程

TCP/IP(套接字)编程:

  • Unix 网络编程,第 1 卷 Stevens 等
  • TCP/IP 图解,史蒂文斯
  • 使用 TCP/IP 的 Internet 网络,第 3 卷,即将到来

HTTP 协议(protocol)

  • RFC 包括
  • RFC 2616对于 HTTP v1.1,
  • RFC 2068对于 v1.1 之前的版本
  • 加上其他取决于支持(压缩、URI/URL)和完整性

关于c++ - 如何在 linux 上用 C/C++ 编写 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338775/

相关文章:

c++ - fopen 并与磁盘同步

c - C 和 Perl 中的 system() 有什么区别?

调用传递给另一个函数的函数指针

c -/etc/passwd的C程序

linux - if [ "${-#*i}"!= "$-"] 是什么意思?

c++ - 编译器指责 "Error C2065: ' ENOTEMPTY' : undeclared identifier". VS 在 WinSock.h 而不是 errno.h 中寻找它的定义

c++ - C++98 中整数集列表的初始化

Linux:如何将多个 FLAC 音频文件组合成一个文件,具有不同的采样率,但不改变音高

java - Java 的线程是否像 Linux 上的进程一样工作?

c++ - CMake 中的更新选项(Make 文件)