我在我的程序中使用websocketpp作为websocket服务器。但最近在一些用户'环境当我在某个特定端口上进行侦听时,发生错误,我打印出error_code的消息,它是"底层传输错误",这是否意味着某些防火墙阻止了第三方安全的监听软件? 代码如下:
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后,没有返回错误,但是在听完之后,出现了错误。
全部谢谢
答案 0 :(得分:0)
首先,请确保您的程序没有吞噬来自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
我的猜测是您有该程序的两个实例试图在同一端口上运行。