Ubuntu mosquitto库函数发布主题函数
时间: 2023-12-10 17:06:01 浏览: 78
在Ubuntu上使用mosquitto库函数发布主题可以使用以下函数:
```c
#include <mosquitto.h>
int mosquitto_publish(struct mosquitto *mosq, int *mid, const char *topic, int payloadlen, const void *payload, int qos, bool retain);
```
该函数可以向MQTT broker发布一个消息,其中参数含义如下:
- `mosq`:指向mosquitto实例的指针。
- `mid`:指向一个整数的指针,用于存储消息ID。如果不需要存储,则可以传递NULL。
- `topic`:一个以NULL结尾的字符串,表示主题名称。
- `payloadlen`:整数,表示消息的长度(字节数)。
- `payload`:指向消息载荷的指针。
- `qos`:整数,表示服务质量。可以是0(最多一次), 1(至少一次)或2(只有一次)。
- `retain`:bool类型,表示是否需要保留消息。
调用成功时,返回0。如果出现错误,则返回相应的错误代码。
以下是一个简单的例子:
```c
#include <mosquitto.h>
int main()
{
struct mosquitto *mosq = NULL;
int rc;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, true, NULL);
if(!mosq){
printf("创建 mosquitto 对象失败!\n");
return 1;
}
rc = mosquitto_connect(mosq, "localhost", 1883, 60);
if(rc != MOSQ_ERR_SUCCESS){
printf("连接 broker 失败: %s\n", mosquitto_strerror(rc));
mosquitto_destroy(mosq);
return 1;
}
const char *topic = "my/topic";
const char *payload = "Hello, world!";
int payloadlen = strlen(payload);
int qos = 0;
bool retain = false;
int mid;
rc = mosquitto_publish(mosq, &mid, topic, payloadlen, payload, qos, retain);
if(rc != MOSQ_ERR_SUCCESS){
printf("发布消息失败: %s\n", mosquitto_strerror(rc));
mosquitto_destroy(mosq);
return 1;
}
mosquitto_disconnect(mosq);
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
```
这个例子中,我们创建了一个mosquitto实例,连接到本地的MQTT broker,发布了一个主题为“my/topic”的消息,然后断开连接并清理mosquitto实例。
阅读全文