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

标签 c++ boost boost-asio websocket++

如果我设置了错误/繁忙的端口,我不会收到端点错误。我使用从 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图书馆

最佳答案

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

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

关于c++ - 处理 boost 端点监听/运行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34177005/

相关文章:

c++ - 惰性符号绑定(bind)失败 : symbol not found

C++:将表格 20160120 中的日期转换为纪元以来的天数

sockets - boost asio udp waitForReadyRead

c++ - 如何将句柄添加为类成员,其中类用于堆模板?

c++ - boost asio - 检查是否有任何内容可以从串行端口读取

c++ - 从 ipv4_address 构造 ip::address

c++ - 如何捕获 boost asio boost::system::error_code 连接异常与其他异常分开?

c++ - 将十六进制字符串转换为无符号整数问题 C++

c++ - 编译特定的 boost 库

c++ - 带有boost的变量参数列表?