ubuntu 使用mosquitto 库函数订阅主题
时间: 2024-02-23 22:00:33 浏览: 73
MQTT消息队列mosquitto的java方式实现客户端订阅
5星 · 资源好评率100%
首先,你需要安装 Mosquitto 库。在 Ubuntu 上可以使用以下命令进行安装:
```
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
```
安装完成后,你可以使用 Mosquitto 提供的命令行客户端 `mosquitto_sub` 来订阅主题。例如,要订阅名为 `test` 的主题,可以使用以下命令:
```
mosquitto_sub -h localhost -t test
```
其中,`-h` 参数指定 MQTT 服务器的主机名或 IP 地址,`-t` 参数指定要订阅的主题名称。
如果你想在程序中使用 Mosquitto 库来订阅主题,可以参考以下示例代码:
```c
#include <stdio.h>
#include <mosquitto.h>
void on_connect(struct mosquitto *mosq, void *userdata, int result)
{
if(result == 0) {
printf("Connected to MQTT broker\n");
mosquitto_subscribe(mosq, NULL, "test", 0);
} else {
fprintf(stderr, "Connect failed\n");
}
}
void on_message(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *msg)
{
printf("Received message: %.*s\n", msg->payloadlen, (char *)msg->payload);
}
int main(int argc, char *argv[])
{
struct mosquitto *mosq = NULL;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, true, NULL);
if(mosq == NULL) {
fprintf(stderr, "Error: Out of memory\n");
return 1;
}
mosquitto_connect_callback_set(mosq, on_connect);
mosquitto_message_callback_set(mosq, on_message);
mosquitto_connect(mosq, "localhost", 1883, 60);
mosquitto_loop_forever(mosq, -1, 1);
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
```
这个示例程序使用 Mosquitto 库提供的 API 来连接 MQTT 服务器,订阅 `test` 主题,并且在收到消息时打印出来。你可以根据自己的需要修改程序。
阅读全文