我在我的程序中使用 websocketpp 作为 websocket 服务器。但是最近在某些用户的环境中,当我监听某个特定端口时,发生了错误,我打印了 error_code 消息,它是“Underlying Transport Error”,这是否意味着第三方安全软件上的一些防火墙阻止了监听? 代码如下:
std::error_code ec;
server_->set_message_handler(boost::bind(&on_message, server_, ::1, ::2));
server->set_tls_init_handler(boost::bind(&on_tls_init,MOZILLA_INTERMEDIATE,::1));
server->init_asio(ec);
server->listen(2007 , ec);
执行init_asio后没有返回错误,但是listen后出现错误。
谢谢大家
最佳答案
首先确保您的程序没有吞噬来自 websocketpp 的任何日志信息。例如,下面的注释行将阻止日志记录:
websocketpp::server<websocketpp::config::asio> server;
//server.set_access_channels(websocketpp::log::alevel::none);
//server.set_error_channels(websocketpp::log::elevel::none);
然后,当您运行该程序时,您应该得到如下内容:
[2018-07-25 10:33:10] [info] asio listen error: system:98 (Address already in use)
这对应于错误代码:boost/asio/error.hpp
。另请参阅:Boost error codes reference
我的猜测是您有两个试图在同一个端口上运行的程序实例。
关于c++ - 收听时 websocketpp "Underlying Transport Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46657432/