Linux 网络编程:理解 Web 路径与简易 HTTP 服务实现
本节内容主要实现一个简单的接收 HTTP 协议请求的服务。通过代码理解 HTTP 协议的格式、报头以及网络资源的访问方式,重点讲解 Web 路径的概念。
准备文件
项目包含以下核心文件:
HttpServer.cc:运行接收 HTTP 请求的服务。HttpServer.hpp:定义 HTTP 请求处理逻辑。Log.hpp:日志打印组件。Socket.hpp:套接字封装组件。
Makefile
HttpServer: Httpserver.cc
g++ -o $@ $^ -std=c++11 -g -lpthread
.PHONY: clean
clean:
rm -rf HttpServer
HttpServer.hpp 类设计
类内成员
class HttpServer {
public:
HttpServer(uint16_t port = defaultport) : port_(port) {}
static void* ThreadRun(void* args);
void start();
~HttpServer() {};
private:
Socket listensock_;
uint16_t port_;
};
port_:端口号,启动服务时指定。listensock_:监听套接字,用于接收连接。ThreadRun:线程执行方法,需为静态成员函数。
封装 sockfd
为了将客户端的 socket 描述符传递给线程,使用结构体封装:
struct ThreadData {
int sockfd;
};
服务启动 (start)
初始化套接字、绑定端口、开启监听,循环接受连接并创建线程处理。


