【问题标题】:QAbstractSocket::UnknownSocketErrorQAbstractSocket::UnknownSocketError
【发布时间】:2009-12-11 03:24:11
【问题描述】:

使用QTcpSocketQAbstractSocket::UnknownSocketError 可能是什么原因?


代码

我收到此错误代码,代码如下:

this->connect(socket, SIGNAL(socketError(QAbstractSocket::SocketError)), SLOT(handleSocketError(QAbstractSocket::SocketError)));
...
void MyClass::handleSocketError(QAbstractSocket::SocketError error)
{
    qDebug() << error;
}

更多信息

QTcpSocket 正在尝试连接到某个远程主机。它失败并出现上述错误代码。

【问题讨论】:

  • 你应该添加一些关于你如何使用它的信息,否则唯一明显的答案是“一个未识别的错误”
  • 我在问题中添加了一些信息。不知道我还能添加什么。
  • 也打印 errorString()。这可能会有所帮助。

标签: c++ qt sockets qt4


【解决方案1】:

如果您阅读代码,您会发现此错误与它所说的完全一样:“发生了一些不好的事情,我不知道为什么”。当然,必须有例外:

  • 套接字未连接到服务器,您尝试对其进行写入(src/network/socket/qabstractsocket.cpp 2025 行)
  • 发生 SSL 错误(src/network/ssl/qsslsocket_openssl.cpp 在很多地方)

在这两种情况下,errorString 都设置为适当的消息。

【讨论】:

    【解决方案2】:

    可能你在没有错误的情况下调用了error()函数。

    【讨论】:

    • 我刚刚对照我的代码检查了你的想法。不,此错误代码与 QAbstractSocket::error 信号一起发出。我已编辑问题以反映这一事实。
    【解决方案3】:

    在 Qt 源代码中寻找 AbstractSocketError 会获得相当多的成功。当您收到 error() 信号时,可能会启动调试器并查看回溯。可能在底层套​​接字引擎(这是一个 Qt 内部类)中发生了异常错误情况。

    【讨论】:

    • 不幸的是,我没有机会调试代码,因为它是在远程服务器上运行的 Windows 服务,并且所描述的行为不会一直重现。
    【解决方案4】:

    远程主机是否需要 ssl 连接?如果您的 Qt 副本无法加载 libssl,则可能会出现问题。当 Qt 找不到 libssl 时,我遇到了同样的问题(UnkownSocketError)

    【讨论】:

    • 不,连接是纯 TCP。无论如何感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多