英文:
in mqtt qos1 i want to set dup flag true i dont know im not setting up dup falg can anybody explain this
问题
bool dup = true;
// 以QoS 1发布消息
rc = mosquitto_publish(mosq, &mid, topic, strlen(message), message, 1, false);
if (rc != MOSQ_ERR_SUCCESS)
{
fprintf(stderr, "发布消息失败:%s\n", mosquitto_strerror(rc));
mosquitto_disconnect(mosq);
return;
}
broker没有提供
1684126876:来自auto-FF3BAA6D-E659-460B-7332-244382A86BDE的PUBLISH消息(d0,q1,r0,m1,'example/topic',...(12字节))
1684126876:向auto-FF3BAA6D-E659-460B-7332-244382A86BDE发送PUBACK(m1,rc0)
我想要d1而不是d0。
英文:
bool dup = true;
// Publish the message with QoS 1
rc = mosquitto_publish(mosq, &mid, topic, strlen(message), message, 1, false);
if (rc != MOSQ_ERR_SUCCESS)
{
fprintf(stderr, "Failed to publish message: %s\n", mosquitto_strerror(rc));
mosquitto_disconnect(mosq);
return;
}
broker not giving
1684126876: Received PUBLISH from auto-FF3BAA6D-E659-460B-7332-244382A86BDE (d0, q1, r0, m1, 'example/topic', ... (12 bytes))
1684126876: Sending PUBACK to auto-FF3BAA6D-E659-460B-7332-244382A86BDE (m1, rc0)
i want d1 instead of d0
答案1
得分: 1
你不需要手动设置dupe
标志,如果客户端需要在客户端断开连接之前重新发送消息,Mosquitto客户端库(或任何其他MQTT客户端库)会为您执行此操作,因为QOS1握手尚未完成。
在这种情况下,当客户端重新连接时,它会设置dupe
标志并重新发送消息。
这不是由最终用户代码设置的。
英文:
You do not manually set the dupe
flag, the mosquitto client library (or any other MQTT client library) does this for you if the client needs to resend the message because the QOS1 handshake did not complete before the client was disconnected.
In that case when the client reconnects it will set the dupe
flag and resend the message.
It is not something the end user code sets.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论