Ошибка QtMqtt: TransportInvalid при подключении - PullRequest
0 голосов
/ 13 марта 2020

Когда я использую исходный код QtMqttClient (скачать из хранилища officcal git) в моей программе При Windows P C я получил ошибку.

QMqttClient client;
client.setPort(1883);
client.setHostname("192.168.100.3");
client.connectToHost();

Я получил следующее сообщение об ошибке :

ClientState: Disconnected, ClientError: TransportInvalid

Из документации qt сказано:

Базовый транспорт вызвал ошибку. Например, соединение могло быть неожиданно прервано.

Затем я копирую код в другой p c с Windows, он работал нормально. И нормально работал на Linux P C.

Что-то не так на моем компьютере или в настройках ОС Windows?

1 Ответ

0 голосов
/ 13 марта 2020

После установки точки останова и добавления некоторого кода отладки в мою программу я обнаружил, что ошибка была в QTcpSocket, ошибка произошла в сетевой модели Qt lib.

Как мы знаем, Mqtt был заблокирован Tcp, и в моей программе tcp не может установить sh соединение, а ошибка равна QAbstractSocket :: UnsupportedSocketOperationError , это меня смутило.

Тогда я ищу в Google, я обнаружил, что кто-то столкнулся с той же ситуацией, что и я. И я нашел решение здесь .

Итак, просто добавьте код в программу перед подключением к серверу, программа работала хорошо.

/* call before connecting to network. Easiest way is, just call somewhere at the beginning of the program */
QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...