QAbstractSocket::UnknownSocketError

Что может быть причиной QAbstractSocket::UnknownSocketError при использовании QTcpSocket?


КОД

Я получаю этот код ошибки со следующим кодом:

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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

QTcpSocket пытается подключиться к какому-то удаленному хосту. И это не удается с указанным кодом ошибки.


person Anthony Serdyukov    schedule 11.12.2009    source источник
comment
Вы должны добавить некоторую информацию о том, как вы его используете, иначе единственным очевидным ответом будет неопознанная ошибка.   -  person Georg Fritzsche    schedule 11.12.2009
comment
Я добавил некоторую информацию к вопросу. Не знаю, что еще я мог бы добавить.   -  person Anthony Serdyukov    schedule 11.12.2009
comment
Распечатайте также errorString(). Это, вероятно, помогло бы.   -  person andref    schedule 11.12.2009


Ответы (4)


Если вы прочитаете код, вы увидите, что эта ошибка означает именно то, что она говорит: «произошло что-то плохое, и я не знаю, почему». Конечно, должны были быть исключения:

  • Сокет не подключен к серверу, и вы пытаетесь в него записать (src/network/socket/qabstractsocket.cpp в строке 2025)
  • Произошла ошибка SSL (src/network/ssl/qsslsocket_openssl.cpp во многих местах)

В обоих случаях для errorString устанавливается соответствующее сообщение.

person andref    schedule 11.12.2009

Возможно, вы вызвали функцию error(), когда ошибки нет.

person rohanpm    schedule 11.12.2009
comment
Я только что проверил вашу идею на своем коде. Нет, этот код ошибки выдается вместе с сигналом QAbstractSocket::error. Я отредактировал вопрос, чтобы отразить этот факт. - person Anthony Serdyukov; 11.12.2009

Поиск AbstractSocketError в исходниках Qt дает довольно много результатов. Возможно, запустите отладчик и просмотрите обратную трассировку, когда получите сигнал error(). Возможно, в базовом механизме сокетов (который является внутренним классом Qt) возникла экзотическая ошибка.

person guruz    schedule 11.12.2009
comment
К сожалению, у меня нет возможности отладить код, так как это служба Windows, запущенная на удаленном сервере, и описанное поведение не воспроизводится постоянно. - person Anthony Serdyukov; 15.12.2009

Требуется ли удаленному хосту ssl-соединение? Это может быть проблемой, если ваша копия Qt не может загрузить libssl. У меня была такая же проблема (UnkownSocketError), когда Qt не мог найти libssl

person Kamil Klimek    schedule 11.12.2009
comment
Нет, соединение чисто TCP. Спасибо за ответ в любом случае. - person Anthony Serdyukov; 15.12.2009