准备文件
首先准备以下文件:

其中 HttpServer.cc 用于运行接收 HTTP 请求的服务,HttpServer.hpp 用于定义 HTTP 请求。Log.hpp 是打印日志的小组件,Socket.hpp 是套接字组件。使用时直接调用相关接口即可。
Makefile
准备 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_ 用于接收主机的请求。在开始工作初始化时可进行 accept 连接。ThreadRun 是线程执行的方法,用于管理服务。
封装 sockfd
对 sockfd 进行封装:
struct ThreadData {
int sockfd;
};
目的是将 指针传给线程,让线程拿到 。 函数创建在类内必须是静态成员,否则不能作为线程执行方法。变成静态成员后不能直接使用 ,因此使用 类型的对象传给线程方法。






