处理 boost 端点监听/运行错误

Posted

技术标签:

【中文标题】处理 boost 端点监听/运行错误【英文标题】:Handle boost endpoint listen/run error 【发布时间】:2015-12-09 10:55:09 【问题描述】:

如果我设置了错误/繁忙的端口,我无法得到端点错误。我使用从 boost 端点公开继承的 websocket 服务器。我想在这里处理错误:

try 
    m_server.reset(); // leads to some errors/warnings in console, but it works :)
    m_server.listen(777777777);
    m_server.start_accept();

    m_thread = std::thread(&Server::run, &m_server);

    return true;

catch (...) 
    m_running = false;
    return false;

我尝试了 m_server.is_listening()、m_server.stopped() 等,但它们对标准/错误端口号显示相同的结果。如何处理错误?

UPD1:我使用websocketpp 库

【问题讨论】:

【参考方案1】:

尝试捕获websocketpp::exception 类型的异常并对其调用code() 方法。这应该返回一个特定的错误代码,您可以检查它是否是“错误/繁忙的端口”或其他错误。

或者,如果您想避免异常,大多数方法(例如listen)将接受第二个错误代码参数,并用异常中设置的错误代码填充该参数。

【讨论】:

我忘记在这里回复我的解决方案了。

以上是关于处理 boost 端点监听/运行错误的主要内容,如果未能解决你的问题,请参考以下文章

WCF 多重绑定 - 错误:没有端点监听

Ubuntu 命令行:运行 ./configure 导致错误“找不到 Boost 标头”

在运行时更改服务引用端点,有时会使用错误的端点

错误系统:9:错误的文件描述符(BOOST::FileSystem)

Wt:致命错误:调用空 boost::function

这是 boost 库中的错误吗