c语言实现mqtt传输json数据代码
时间: 2023-08-06 12:24:24 浏览: 382
以下是使用 Eclipse Paho MQTT C 客户端库发布 JSON 数据的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MQTTClient.h"
#include "cJSON.h"
// 定义 MQTT 服务器和主题
#define MQTT_BROKER_ADDRESS "tcp://mqtt.eclipseprojects.io:1883"
#define MQTT_TOPIC "test/json"
// 定义 JSON 数据
char *data = "{\"name\":\"Alice\",\"age\":25,\"gender\":\"female\"}";
int main(int argc, char* argv[])
{
MQTTClient client;
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
MQTTClient_message pubmsg = MQTTClient_message_initializer;
MQTTClient_deliveryToken token;
int rc;
// 连接到 MQTT 服务器
MQTTClient_create(&client, MQTT_BROKER_ADDRESS, "c-json-publisher", MQTTCLIENT_PERSISTENCE_NONE, NULL);
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
MQTTClient_connect(client, &conn_opts);
// 发布 JSON 数据
pubmsg.payload = data;
pubmsg.payloadlen = strlen(data);
pubmsg.qos = 0;
pubmsg.retained = 0;
MQTTClient_publishMessage(client, MQTT_TOPIC, &pubmsg, &token);
rc = MQTTClient_waitForCompletion(client, token, 10000L);
// 断开连接
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
return rc;
}
```
在上述代码中,我们首先定义了 MQTT 服务器的地址和主题。然后,我们创建了一个包含 JSON 数据的字符串。接着,我们连接到 MQTT 服务器,通过 `MQTTClient_publishMessage()` 方法发布 JSON 数据。最后,我们断开了与 MQTT 服务器的连接。
接收 JSON 数据的代码类似,只需要在 MQTT 订阅的回调函数中对接收到的 payload 进行反序列化即可。注意,需要在代码中添加 cJSON 库的头文件和链接库。
阅读全文