【问题标题】:Pistache: how to set TCP server options, for example SO_REUSEADDRPistache:如何设置 TCP 服务器选项,例如 SO_REUSEADDR
【发布时间】:2021-10-04 16:24:46
【问题描述】:

我开始用 Pistache 做一些测试,我想知道如何设置 TCP 选项。如下例所示,我想将SO_REUSEADDR 设置为服务器套接字。

#include <pistache/endpoint.h>

using namespace Pistache;

struct HelloHandler : public Http::Handler {
  HTTP_PROTOTYPE(HelloHandler)
  void onRequest(const Http::Request&, Http::ResponseWriter writer) override{
    writer.send(Http::Code::Ok, "Hello, World!");
  }
};

int main() {
  Http::listenAndServe<HelloHandler>(Pistache::Address("*:9080"));
}

【问题讨论】:

  • 我找到了pistache::Tcp::setSocketOptions,这可能会满足您的需求。
  • AFAICS,pistache::Tcp::setSocketOptions() 是实现私有的,不能直接调用。

标签: c++ sockets server


【解决方案1】:

listenAndServe() 有一个可选的options 参数,Options 类定义了一个ReuseAddr 标志(和一个ReusePort 标志),例如:

int main() {
    auto opts = Http::Endpoint::options();
    opts.flags(Tcp::Options::ReuseAddr);
    // set other options as needed...
    Http::listenAndServe<HelloHandler>(Pistache::Address("*:9080"), opts);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    相关资源
    最近更新 更多