gpt4 book ai didi

c++ - Paho MQTT (C++) 客户端无法连接到 Mosquitto

转载 作者:行者123 更新时间:2023-11-28 01:41:06 26 4
gpt4 key购买 nike

我有使用 Paho MQTTPacket 嵌入式 C++ 库连接到 MQTT 代理的 C++ 代码。当该经纪人是 io.adafruit.com 时,它工作得很好。但是当它是我自己的 Mosquitto 实例在我的 Raspberry Pi 上运行时,连接失败。我已将其缩小到 MQTTClient.h 中的这一行,在 MQTT::Client::connect 方法中:

// this will be a blocking call, wait for the connack
if (waitfor(CONNACK, connect_timer) == CONNACK)

应用程序在这里挂起大约 30 秒,然后得到 CONNACK 以外的结果(具体来说是 0 而不是 2)。

我已经尝试了协议(protocol)版本 3(即 3.1)和 4(即 3.1.1);同样的结果。

我的 Mosquitto 实例没有设置身份验证或密码。我试过在 Mosquitto 日志中打开调试消息,但它们没有显示任何有用的信息。我不知所措。为什么我无法从我的 C++ Paho 代码连接到 Mosquitto?

编辑:这是客户端代码...同样,这在 Adafruit 上运行良好,但是当我将它指向本地主机上的 Mosquitto 时,它会按照描述挂起。 (我删除了用户名和密码——我正在发送它们,但我真的不认为这些是问题所在,因为在命令行上使用 mosquitto_pub 或 mosquitto_sub,无论如何我都可以连接,因为 mosquitto 配置为允许匿名连接。)

const char* host = "127.0.0.1";
int port = 1883;
const char* clientId = "ZoomBridge";
const char* username = "...";
const char* password = "...";
MQTT::QoS subsqos = MQTT::QOS2;

ipstack = new IPStack();
client = new MQTT::Client<IPStack, Countdown, 30000>(*ipstack);

MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.willFlag = 1;
data.MQTTVersion = 3;
data.clientID.cstring = (char*)clientId;
data.username.cstring = (char*)username;
data.password.cstring = (char*)password;

data.keepAliveInterval = 20;
data.cleansession = 1;

int rc = ipstack->connect(host, port);
if (rc != MQTT::SUCCESS) {
cout << "Failed [1] (result " << rc << ")" << endl;
return rc;
}

rc = client->connect(data);
if (rc != MQTT::SUCCESS) {
cout << "Failed [2] (result " << rc << ")" << endl;
ipstack->disconnect();
return rc;
}

最佳答案

如评论中所述。

看起来您正在设置标志以指示您要为客户端设置遗嘱和遗嘱 (data.willFlag = 1;),但随后没有为轻重量。

如果您不需要 LWT,则将标志设置为 0(或删除线路设置标志),因为它应该默认为禁用。

另外值得一提的是,这一切都与 Paho Embedded C++ MQTTPacket client 有关不是完全成熟的Paho C++ client .

关于c++ - Paho MQTT (C++) 客户端无法连接到 Mosquitto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47115790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com