QWebSocket“未知错误”

Posted

技术标签:

【中文标题】QWebSocket“未知错误”【英文标题】:QWebSocket "Unknown Error" 【发布时间】:2017-03-09 01:53:30 【问题描述】:

我一直在尝试使用 Qt websocket 类设置 websocket 客户端。 不幸的是,我无法完成第一步:将我的客户端连接到服务器。

我确信连接是可能的,因为 Go ws websocket client 和 C++ easywsclient library 都可以与服务器连接和接口。

我的代码的相关部分如下:

  QWebSocket socket;
  socket.open(QUrl("ws://localhost:9999"));
  qDebug() << socket.error() << socket.errorString();

运行程序时,我收到以下(无用)消息:

QAbstractSocket::UnknownSocketError "Unknown error"

有没有办法澄清错误和/或解决问题?

附:虽然 easywsclient 库可以与服务器连接和交互,但它只做了一个边际工作,这就是我宁愿使用 Qt 类的原因。

【问题讨论】:

【参考方案1】:

没有错误。 open() 是异步的。将connected()disconnected()error()textMessageReceived() 信号连接到QObject 派生对象的插槽。如果它是一个非常基本的应用程序,或者使用一些 lambdas:

QWebSocket socket;
QObject::connect(&socket, &QWebSocket::connected, []  qDebug() << "connected"; );
QObject::connect(&socket, &QWebSocket::error, [](QAbstractSocket::SocketError error)  qDebug() << error; );
socket.open(QUrl("ws://localhost:9999"));

【讨论】:

谢谢,我没有意识到 open() 是异步的。我已经使用 lambda 插槽以及实际正确的插槽尝试了您的代码,但我的客户端仍然无法连接到服务器。使用 Wireshark 进行调试,我看到在初始握手之后,客户端立即发送 FIN、ACK 并终止连接。知道这里会发生什么吗? 更新:奇迹般的 websockets 已经开始工作了。似乎端口更改起到了作用。这是一个只影响我的本地问题。非常感谢您的所有帮助:)

以上是关于QWebSocket“未知错误”的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 打开时出现未知错误

aria2下载ftp未知错误

[提问]:“读取数据源出现未知错误:Serialization错误”?

给出未知错误的未知 Keydown 事件[关闭]

Appium 未知错误:处理命令时发生未知的服务器端错误。原始错误:重新安装需要“应用程序”选项

Mysql 启动 mysql 的未知错误和启动 apache 的未知错误的问题