cpp httplib实现文件服务器代码
时间: 2024-10-28 09:07:40 浏览: 85
在C++中,我们可以使用httplib库来创建一个简单的文件服务器。httplib是一个轻量级的HTTP服务器库,适合快速原型设计和个人项目。下面是一个简化的例子,展示如何使用它来提供静态文件:
```cpp
#include <iostream>
#include "httplib.h"
using namespace std;
using namespace htp;
void serve_file(const string& path) {
File f(path.c_str());
if (!f.is_open()) {
response resp;
resp.status = Status::HTTP_NOT_FOUND;
resp.set_content("File not found");
return;
}
auto size = f.size();
auto buffer = (uint8_t*)malloc(size);
f.read(buffer, size);
response resp;
resp.status = Status::HTTP_OK;
resp.set_header("Content-Length", to_string(size));
resp.set_content(buffer, size);
free(buffer);
}
int main() {
Server server(8080); // 设置监听端口
server.on("/(.+)", [&](Request& req, Response& res) {
serve_file("./files/" + req.uri); // 文件目录在程序同级的"files"文件夹下
});
server.listen();
cout << "Server started at http://localhost:8080" << endl;
server.run_forever(); // 监听并响应请求
return 0;
}
```
这个代码首先设置了服务器监听8080端口,然后定义了一个处理函数`serve_file`,它会尝试打开指定路径的文件,并将内容作为HTTP响应返回给客户端。当接收到客户端的GET请求时,如果路径匹配,服务器会尝试提供对应的文件。
注意:实际使用时,你需要先安装httplib库(如果你还没有安装,可以去其GitHub页面下载),并在项目的构建环境中链接库。此外,为了保证安全性,最好使用更安全的方式来处理用户输入的URL,避免目录遍历攻击。
阅读全文