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

时间:2015-12-09 10:55:10

标签: 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()等,但它们对于norm / bad端口号都显示相同的结果。我该如何处理错误?

UPD1:我使用websocketpp

1 个答案:

答案 0 :(得分:1)

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

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