|
STTNet 0.7.0
|
面向 Linux 的轻量级高性能 C++17 网络框架。基于 epoll 与 Reactor,提供 HTTP、TCP、UDP、WebSocket、TLS、WorkerPool、日志和常用网络工具。
历史版本曾在 4 核 4 GB 设备上记录约 6.5 万请求/秒、2–3 ms 平均延迟。该数据仅用于说明历史测试表现,实际结果应以目标环境的 Release 压测为准。
下面以 Ubuntu / Debian 为例。命令中的注释说明了每一步在做什么。
# 1. 下载 STTNet 源码
git clone https://github.com/StephenTaam/STTNet.git
cd STTNet
# 2. 安装编译器、CMake、JsonCpp 和 OpenSSL 开发包
sudo apt update
sudo apt install -y build-essential cmake pkg-config libjsoncpp-dev libssl-dev
# 3. 生成 Release 构建目录,并启用示例程序
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DSTTNET_BUILD_EXAMPLE=ON \
-DSTTNET_BUILD_TESTS=OFF
# 4. 编译 STTNet 和所有示例
cmake --build build -j
# 5. 启动最小 HTTP 示例
./build/examples/sttnet_http_hello
# 6. 新开一个终端验证接口,预期输出 pong
curl http://127.0.0.1:8080/ping
创建服务器、注册 /ping 路由、启动监听,并在收到 Ctrl-C 或 SIGTERM 后正常关闭。
#include <sttnet.h>
#include <iostream>
int main()
{
using namespace stt::network;
using stt::system::ServerSetting;
// 在创建 Reactor 和 Worker 线程前屏蔽退出信号。
// 主线程稍后会同步等待 SIGINT / SIGTERM。
if(!ServerSetting::blockTerminationSignals())
return 1;
// HttpServer 管理监听套接字、连接、Reactor 和 WorkerPool。
HttpServer server;
// 注册 /ping。发送成功返回 1;发送失败返回 -2 并关闭连接。
server.setFunction("/ping",
[](HttpServerFDHandler &client, HttpRequestInformation &) {
return client.sendText("pong") ? 1 : -2;
});
// 监听 8080 端口。
if(!server.startListen(8080))
return 2;
std::cout << "http://127.0.0.1:8080/ping
";
// Ctrl-C 或 SIGTERM 到来前,主线程会阻塞在这里。
ServerSetting::waitForTerminationSignal();
// 在普通线程上下文中完成优雅退出和资源释放。
return server.close() ? 0 : 3;
}
每个 Demo 都包含完整源码、构建方式、测试命令和预期结果。