溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MQTT在C語言中的動(dòng)態(tài)主題訂閱

發(fā)布時(shí)間:2024-10-25 18:06:43 來源:億速云 閱讀:80 作者:小樊 欄目:編程語言

在C語言中,使用MQTT協(xié)議進(jìn)行動(dòng)態(tài)主題訂閱需要使用MQTT客戶端庫。其中,libmosquitto是一個(gè)廣泛使用的開源MQTT客戶端庫。以下是一個(gè)使用libmosquitto庫進(jìn)行動(dòng)態(tài)主題訂閱的示例:

  1. 首先,確保已經(jīng)安裝了libmosquitto庫。在Ubuntu系統(tǒng)中,可以使用以下命令安裝:
sudo apt-get install libmosquitto-dev
  1. 創(chuàng)建一個(gè)C語言程序,例如mqtt_subscribe.c,并包含必要的頭文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mosquitto.h>
  1. 定義一個(gè)回調(diào)函數(shù),用于處理接收到的消息:
int message_callback(void *userdata, struct mosquitto_message *message) {
    printf("Received message: %s from topic: %s\n", message->payload, message->topic);
    return 0;
}
  1. main函數(shù)中,初始化MQTT客戶端,并連接到MQTT代理:
int main(int argc, char *argv[]) {
    int rc;
    struct mosquitto *client;
    const char *broker = "tcp://broker.hivemq.com:1883";
    const char *client_id = "C_Client_1";

    client = mosquitto_new(client_id, true, NULL);
    if (!client) {
        fprintf(stderr, "Failed to create mosquitto client\n");
        return 1;
    }

    rc = mosquitto_connect(client, broker, 1883, 60);
    if (rc != MOSQ_ERR_SUCCESS) {
        fprintf(stderr, "Failed to connect to broker: %d\n", rc);
        mosquitto_destroy(client);
        return 1;
    }
  1. 訂閱動(dòng)態(tài)主題。在這個(gè)例子中,我們將訂閱一個(gè)以test/topic/開頭的主題,并使用通配符+來匹配任意長度的子主題:
char *topic = "test/topic/+";
rc = mosquitto_subscribe(client, &topic, 0);
if (rc != MOSQ_ERR_SUCCESS) {
    fprintf(stderr, "Failed to subscribe to topic: %d\n", rc);
    mosquitto_disconnect(client);
    mosquitto_destroy(client);
    return 1;
}
  1. 設(shè)置回調(diào)函數(shù),并開始循環(huán)處理消息:
mosquitto_set_callback(client, message_callback);
mosquitto_loop_start(client);
  1. 在程序結(jié)束前,斷開連接并銷毀客戶端:
mosquitto_disconnect(client);
mosquitto_destroy(client);
  1. 編譯并運(yùn)行程序:
gcc mqtt_subscribe.c -o mqtt_subscribe -lmosquitto
./mqtt_subscribe

現(xiàn)在,程序?qū)⒂嗛?code>test/topic/開頭的所有主題,并在接收到消息時(shí)打印出消息內(nèi)容和主題。你可以根據(jù)需要修改主題和回調(diào)函數(shù)來滿足你的需求。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI