c++ - 收听时 websocketpp "Underlying Transport Error"

标签 c++ websocket

我在我的程序中使用 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/

相关文章:

python - 操作系统错误 : exception: access violation reading with Cyphon basic example

c++ - 游戏中的 Unicode 输入处理

java - 从 C/C++ 代码通知 java 对象?

websocket - Mosquitto 1.4.2 Websocket 支持

java - SimpleWebSocket 类型中的 setBroadcaster(Broadcaster) 在 Grizzly java 中不可见

c++ - QTemporaryFile 为空

c++ - Qt 用户自定义热键

google-chrome - 在 Chromium 重新启动之前,WebSocket 不会连接到特定主机

Java WebSocketClient 没有收到大尺寸的消息

go - 更新 : Send the origin header with js websockets