2017-03-06 2 views
0

Ich bin mit dem MQTT-Broker unter Verwendung von Mosquitto C client libraray verbunden.mosquitto_publish gibt MOSQ_ERR_SUCCESS zurück, obwohl der MQTT-Broker nicht ausgeführt wird

Ich verwendete den folgenden Code für die Verbindung.

ret = mosquitto_connect (Moschee, MQTT_HOSTNAME, MQTT_PORT, 0);

Nach der Verbindung mit Broker stoppte ich den Broker-Service.

Jetzt habe ich versucht, Nachricht unter Verwendung von Code unten zu veröffentlichen.

ret = mosquitto_publish (mosq, NULL, Thema, strlen (Text), Text, 1, 1);

Obwohl der Broker ausgeführt wird, gibt die API "mosquitto_publish" den Erfolg zurück. Beim zweiten Aufruf von mosquitto_publish API gibt es 14 zurück

Warum mosquitto_publish gibt Erfolg zurück, obwohl der Broker ausgeführt wird? Wie Sie dieses Problem beheben?

Vielen Dank im Voraus.

+0

Welche Sprache ist dieser Client ??? Java? Python? –

+0

Ich benutze Mosquitto C Client Bibliothek. Ich habe auch mit Paho C MQTT-Client-Bibliothek versucht, die sich für dieses Szenario ähnlich verhält. – user369287

Antwort

0

Bei Verwendung zusammen mit mosquitto_start() ist die Funktion mosquitto_publish() vollständig asynchron. Es fügt lediglich eine neue Nachricht zur Warteschlange hinzu und aktiviert den Netzwerk-Thread. Wenn das letzte Mal, als der Client versuchte, mit dem Broker zu kommunizieren, alles in Ordnung war, können wir nicht wissen, dass die Verbindung unterbrochen ist. Wenn Sie mosquitto_publish() aufrufen, kann nur der Erfolg zurückgegeben werden, abgesehen von anderen Fehlern. Wenn der Client versucht, diese Veröffentlichung zu senden, stellt er fest, dass das Netzwerk ausgefallen ist, und alle nachfolgenden Veröffentlichungen geben den entsprechenden Fehler zurück.

Verwandte Themen