2017-03-06 10 views
0

Mosquitto Cクライアント・ライブラリを使用してMQTTブローカーに接続しました。mosquitto_publishは、MQQTブローカーが実行されていないのに、MOSQ_ERR_SUCCESSイベントを返します。

以下のコードを使用して接続しました。

ret = mosquitto_connect(mosq、MQTT_HOSTNAME、MQTT_PORT、0);

ブローカに接続した後、私はブローカサービスを停止しました。

私は以下のコードを使用してメッセージを公開しようとしました。

ret = mosquitto_publish(mosq、NULL、topic、strlen(text)、text、1、1);

イベントブローカが実行中でも、mosquitto_publish APIは成功を返します。 mosquitto_publish APIを2回呼び出すと、14が返されます。

なぜ、mosquitto_publishはブローカが実行されているかのように成功を返しますか?

ありがとうございます。

+0

どの言語がそのクライアントですか? Java? Python? –

+0

私はMosquitto Cクライアントライブラリを使用しています。私はPaho C MQTTクライアント・ライブラリーも試してみましたが、このシナリオでも同様に動作しています。 – user369287

答えて

0

mosquitto_start()と一緒に使用すると、mosquitto_publish()の機能は完全に非同期です。キューに新しいメッセージを追加し、ネットワークスレッドを起動します。クライアントがブローカと通信しようとした最後の時間にすべてがうまくいけば、接続が切断されていることを知る方法がありません。 mosquitto_publish()に電話をすると、他のエラーを除いてのみ成功を返すことができます。クライアントがその発行を送信しようとすると、ネットワークがダウンしていることが判明し、それ以降のパブリッシュは適切なエラーを返します。

関連する問題