mosquitto_publish returns MOSQ_ERR_SUCCESS 尽管 MQTT 代理不是 运行

mosquitto_publish returns MOSQ_ERR_SUCCESS eventhough MQTT broker is not running

我使用 Mosquitto C 客户端库连接到 MQTT 代理。

我使用下面的代码进行连接。

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

连接到代理后,我停止了代理服务。

现在我尝试使用以下代码发布消息。

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

尽管经纪人 运行,mosquitto_publish API returns 成功。 第二次调用mosquitto_publishAPI时,returns14.

为什么 mosquitto_publish returns 尽管经纪人 运行 成功?如何解决这个问题?

提前致谢。

当与mosquitto_start()一起使用时,mosquitto_publish()函数是完全异步的。它所做的只是向队列中添加一条新消息并唤醒网络线程。如果上次客户端尝试与代理通信时一切正常,那么我们无法知道连接已断开。当您调用 mosquitto_publish() 时,它只能 return 成功,除非出现任何其他错误。当客户端尝试发送该发布时,它发现网络已关闭,因此任何后续发布都将 return 相应的错误。