STTNet 0.7.0

Demo:HTTPS/TLS 服务

可构建、可运行、可验证,并与仓库 examples 目录中的源码保持一致。

1. 示例内容

完整源码中的关键调用均有中文注释,页面同时给出运行命令、验证方法和可调整参数。

2. 构建与运行

cmake --build build --target sttnet_tls_https --parallel
./build/examples/sttnet_tls_https

3. 运行结果

curl -k https://127.0.0.1:8443/ping
预期:返回 secure pong。

4. 完整源码

#include <sttnet.h>

#include <iostream>

int main(int argc, char **argv)
{
    using namespace stt::network;
    using stt::system::ServerSetting;

    if(argc != 3)
    {
        std::cerr << "usage: " << argv[0] << " <server.crt> <server.key>\n";
        return 1;
    }

    if(!ServerSetting::blockTerminationSignals())
        return 2;

    HttpServer server;

    // TLS 配置发生在 startListen() 之前;这里是普通单向 HTTPS:
    // 客户端验证服务端证书,服务端不要求
    // 客户端证书;需要 mTLS 时使用五参数重载。
    if(!server.setTLS(argv[1], argv[2]))
    {
        std::cerr << "failed to load certificate or private key\n";
        return 3;
    }

    server.setFunction("/secure",
        [](HttpServerFDHandler &client, HttpRequestInformation &) {
            return client.sendJson(Json::Value("TLS is active")) ? 1 : -2;
        });

    if(!server.startListen(8443))
    {
        std::cerr << "failed to listen on port 8443\n";
        return 4;
    }

    std::cout << "HTTPS demo listening on https://127.0.0.1:8443/secure\n";
    ServerSetting::waitForTerminationSignal();
    return server.close() ? 0 : 5;
}