日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

鸿蒙系统是单任务还是多任务,在鸿蒙系统上使用MQTT编程

發布時間:2024/9/27 windows 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鸿蒙系统是单任务还是多任务,在鸿蒙系统上使用MQTT编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們使用的是paho mqtt軟件包,這里介紹一下怎么使用mqtt協議編程。關于鴻蒙系統的mqtt移植好的軟件包,相關github鏈接如下:

https://gitee.com/qidiyun/harmony_mqtt

這里提供一個簡單的編程示例:

這里我們使用MQTTClient編程模型,他支持多任務多線程,非常適合用在鴻蒙系統上。

1. 網絡初始化

這里定義一個 Network 結構體,然后指定我們的MQTT服務器的IP和端口號。

Network?n;

//初始化結構體

NetworkInit(&n);

//連接到指定的MQTT服務器IP、端口號

NetworkConnect(&n,?“XXX.XXX.XXX.XXX”,?XXXX);

2. 設置MQTT緩存和啟動MQTT線程

我們這里使用的是MQTT線程功能。

MQTTClientInit(&c,?&n,?1000,?buf,?100,?readbuf,?100);

MQTTStartTask(&c);

3. 設置MQTT相關參數

接下來我們設置MQTT的相關參數,包括版本號、客戶端ID、賬戶密碼等

MQTTPacket_connectData?data?=?MQTTPacket_connectData_initializer;

data.willFlag?=?0;

//MQTT版本為?v3

data.MQTTVersion?=?3;

//設置客戶端ID

data.clientID.cstring?=?opts.clientid;

//設置客戶端賬戶

data.username.cstring?=?opts.username;

//設置客戶端密碼

data.password.cstring?=?opts.password;

data.keepAliveInterval?=?10;

data.cleansession?=?1;

//連接到MQTT服務器

rc?=?MQTTConnect(&c,?&data);

4. 訂閱主題和接收消息

訂閱主題可以使用如下函數

MQTTSubscribe(&c,?topic,?opts.qos,?messageArrived);

它的函數原型如下:

DLLExportintMQTTSubscribe(MQTTClient*?client,?constchar*?topicFilter,?enum?QoS,?messageHandler);

其中:

void?messageArrived(MessageData*?md)

{

MQTTMessage*?message?=?md->message;

//打印接收到的消息的長度、和消息內容

printf("%.*s",?(int)message->payloadlen,?(char*)message->payload);

}

5. 發送消息

發送消息也比較簡單,我們只需要設置好我們的主題和消息內容即可

memset(&pubmsg,'\0',?sizeof(pubmsg));

//消息內容為?hello?harmonyOS?!

pubmsg.payload?=?(void*)"hello?harmonyOS?!";

//消息長度

pubmsg.payloadlen?=?strlen((char*)pubmsg.payload);

pubmsg.qos?=?QOS0;

pubmsg.retained?=?0;

pubmsg.dup?=?0;

//推送消息,主題為?pubtest

MQTTPublish(&c,?"pubtest",?&pubmsg);

完整源碼如下:

#include?

#include?

#include?"ohos_init.h"

#include?"cmsis_os2.h"

#include?

#include?"hi_wifi_api.h"

//#include?"wifi_sta.h"

#include?"lwip/ip_addr.h"

#include?"lwip/netifapi.h"

#include?"lwip/sockets.h"

#include?"MQTTClient.h"

/**

*?MQTT?URI?farmat:

*?domain?mode

*?tcp://iot.eclipse.org:1883

*

*?ipv4?mode

*?tcp://192.168.10.1:1883

*?ssl://192.168.10.1:1884

*

*?ipv6?mode

*?tcp://[fe80::20c:29ff:fe9a:a07e]:1883

*?ssl://[fe80::20c:29ff:fe9a:a07e]:1884

*/

#define?MQTT_URI????????????????"tcp://106.13.62.194:1883"

struct?opts_struct

{

char*?clientid;

intnodelimiter;

char*?delimiter;

enum?QoS?qos;

char*?username;

char*password;

char*?host;

intport;

intshowtopics;

}?opts?=

{

(char*)"stdout-subscriber",?0,?(char*)"\n",?QOS2,NULL,NULL,?(char*)"106.13.62.194",?1883,?1

};

void?messageArrived(MessageData*?md)

{

MQTTMessage*?message?=?md->message;

if?(opts.showtopics)

printf("%.*s\t",?md->topicName->lenstring.len,?md->topicName->lenstring.data);

if?(opts.nodelimiter)

printf("%.*s",?(int)message->payloadlen,?(char*)message->payload);

else

printf("%.*s%s",?(int)message->payloadlen,?(char*)message->payload,?opts.delimiter);

//fflush(stdout);

}

unsigned?charbuf[100];

unsigned?charreadbuf[100];

intmqtt_test(void)

{

intrc?=?0;

MQTTMessage?pubmsg;

char*?topic?="test";

if?(strchr(topic,?'#')?||?strchr(topic,'+'))

opts.showtopics?=?1;

if?(opts.showtopics)

printf("topic?is?%s\n",?topic);

Network?n;

MQTTClient?c;

NetworkInit(&n);

NetworkConnect(&n,?opts.host,?opts.port);

MQTTClientInit(&c,?&n,?1000,?buf,?100,?readbuf,?100);

MQTTStartTask(&c);

MQTTPacket_connectData?data?=?MQTTPacket_connectData_initializer;

data.willFlag?=?0;

data.MQTTVersion?=?3;

data.clientID.cstring?=?opts.clientid;

data.username.cstring?=?opts.username;

data.password.cstring?=?opts.password;

data.keepAliveInterval?=?10;

data.cleansession?=?1;

printf("Connecting?to?%s?%d\n",?opts.host,?opts.port);

rc?=?MQTTConnect(&c,?&data);

printf("Connected?%d\n",?rc);

printf("Subscribing?to?%s\n",?topic);

rc?=?MQTTSubscribe(&c,?topic,?opts.qos,?messageArrived);

printf("Subscribed?%d\n",?rc);

memset(&pubmsg,?'\0',?sizeof(pubmsg));

pubmsg.payload?=?(void*)"hello?harmonyOS?!";

pubmsg.payloadlen?=?strlen((char*)pubmsg.payload);

pubmsg.qos?=?QOS0;

pubmsg.retained?=?0;

pubmsg.dup?=?0;

while?(1)

{

MQTTPublish(&c,?"pubtest",?&pubmsg);

sleep(1);

}

printf("Stopping\n");

MQTTDisconnect(&c);

NetworkDisconnect(&n);

return0;

}

【編輯推薦】

【責任編輯:jianghua TEL:(010)68476606】

點贊 0

總結

以上是生活随笔為你收集整理的鸿蒙系统是单任务还是多任务,在鸿蒙系统上使用MQTT编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品人妻少妇AV无码专区 | 九色porny丨精品自拍视频 | 欧美中文字幕一区二区三区 | www.国产| 一级黄色美女 | 污污视频网站免费观看 | 伊人3 | 亚洲一区二区伦理 | 丁香六月综合激情 | 精品成人中文无码专区 | 精品女同一区二区三区 | 国产熟妇一区二区三区aⅴ网站 | 影音先锋男人的天堂 | 99热亚洲 | 国产一区二区三区网站 | 最色网站| 1024毛片基地 | 日韩久久久久久久久久久 | 西西人体www大胆高清 | 亚洲AV无码乱码国产精品牛牛 | 亚洲国产电影在线观看 | 久久久福利 | 国产欧美视频在线播放 | 实拍澡堂美女洗澡av | 国产欧美视频在线播放 | 欧美又粗又深又猛又爽啪啪九色 | 日本高清不卡二区 | 99riav国产在线观看 | 久久99精品久久久 | 久久爱网 | 国产一区二区在线不卡 | 亚洲在线观看一区二区 | 一区二区三区波多野结衣 | 国产ts人妖系列高潮 | 精品一区二区三区在线免费观看 | 亚洲av无码一区二区三区在线 | 亚洲中文字幕无码不卡电影 | 中文字幕一区二区三区在线不卡 | 国产一区影院 | 免费a在线观看播放 | 污污动态图 | 污视频免费在线观看 | 午夜在线视频免费 | 色视频在线免费观看 | 日韩八区| 少妇人妻偷人精品无码视频 | www.操| 国产精品色综合 | 中文字幕一区二区三区久久久 | 亚洲玖玖玖| 成人午夜一区 | 国产视频123区 | 国内精品偷拍视频 | 成人动漫在线观看视频 | 爱情岛论坛亚洲品质自拍 | 黄色大片在线播放 | 国产一区中文 | 亚洲精品视频免费观看 | 97人人澡人人爽人人模亚洲 | 日韩av一区二区在线观看 | 日本黄网站在线观看 | 男同av在线观看一区二区三区 | 精品久久久噜噜噜久久久 | 亚洲精品乱码久久久久久久 | 91传媒在线免费观看 | 成人a视频在线观看 | 午夜成人在线视频 | 国产精品免费一区二区三区 | 国产在线视频第一页 | x88av视频 | 夜色88v精品国产亚洲 | 无码久久精品国产亚洲av影片 | 国产视频不卡一区 | 亚洲精品乱码久久久久99 | 性生交大片免费看视频 | 欧美激情在线一区 | 欧美成欧美va | 一级欧美一级日韩 | 春物催眠| 五月婷在线 | 免费无码国产精品 | www黄色片网站 | 欧美成人vr18sexvr | 中国女人一级一次看片 | 尤物最新网址 | 韩国黄色网址 | 91传媒在线免费观看 | 四虎影视黄色 | 日本乱大交xxxx公交车 | 奶罩不戴乳罩邻居hd播放 | 性色免费视频 | 国产精品无码在线播放 | 精品一区二区三区视频在线观看 | 成人做爰www看视频软件 | 免费看污的网站 | 男女做爰猛烈刺激 | 国产精品一卡二卡在线观看 | 日韩特级片 | 亚洲一区二区三区在线播放 |