STTNet 0.7.0
载入中...
搜索中...
未找到
STTNet 中文入门手册与 API 参考

STTNet 0.7.0

面向 Linux 的轻量级高性能 C++17 网络框架。基于 epoll 与 Reactor,提供 HTTP、TCP、UDP、WebSocket、TLS、WorkerPool、日志和常用网络工具。

English · 返回语言选择 · GitHub

历史版本曾在 4 核 4 GB 设备上记录约 6.5 万请求/秒、2–3 ms 平均延迟。该数据仅用于说明历史测试表现,实际结果应以目标环境的 Release 压测为准。

下载、安装依赖并运行

下面以 Ubuntu / Debian 为例。命令中的注释说明了每一步在做什么。

Terminal
# 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
其他 Linux 发行版:安装等价的 C++17 编译器、CMake、pkg-config、JsonCpp 开发包和 OpenSSL 开发包即可。

最小 HTTP 服务做了什么

创建服务器、注册 /ping 路由、启动监听,并在收到 Ctrl-C 或 SIGTERM 后正常关闭。

main.cpp
#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;
}

指导手册与 API 参考

指导手册提供按主题组织的说明与完整示例;API 参考提供类、函数及成员签名。

作者
StephenTaam · 1356597983@qq.com