在 C++ 中实现一个简单的 HTTP 服务器
在现代软件开发中,HTTP 服务器是网络应用程序的核心组成部分。虽然有许多现成的 HTTP 服务器可供使用,但了解如何从头开始实现一个简单的 HTTP 服务器可以帮助我们更好地理解网络编程和 C++ 的特性。在本文中,我们将逐步实现一个简单的 HTTP 服务器,支持基本的 GET 请求。
1. 准备工作
1.1 环境设置
在开始之前,请确保你已经安装了 C++ 编译器(如 g++)和 CMake(可选)。我们将使用 POSIX 套接字 API,因此本示例适用于类 Unix 系统(如 Linux 和 macOS)。如果你在 Windows 上工作,可以使用 WSL(Windows Subsystem for Linux)或 Cygwin。
1.2 项目结构
创建一个新的项目文件夹,并在其中创建以下文件:
http_server/
├── CMakeLists.txt
└── main.cpp
2. CMake 配置
在 CMakeLists.txt
中,添加以下内容以配置项目:
cmake_minimum_required(VERSION 3.10)
project(SimpleHttpServer)
set(CMAKE_CXX_STANDARD 11)
add_executable(http_server main.cpp)
3. 实现 HTTP 服务器
3.1 引入必要的头文件
在 main.cpp
中,首先引入必要的头文件:
#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
3.2 创建服务器类
我们将创建一个 HttpServer
类来封装服务器的功能:
class HttpServer {
public:
HttpServer(int port);
void start();
private:
int server_fd;
int port;
void handleClient(int client_fd);
std::string getResponse(const std::string& re