第三步:執行
第二部分:單向認證模式
第四步:執行
本章節主要介紹用c#
實現mqtt
的訂閱和發布。
分為 無加密模式 和 單向認證模式。
測試環境為本機。
準備工作:
保持安裝後預設配置即可
visual studio
中新建控制台應用程式normalpublisher
,新增m2mqtt
引用。program
類中如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using uplibrary.networking.m2mqtt;
using uplibrary.networking.m2mqtt.messages;
namespace normalpublisher
,content:"
, topic, content));}}}
visual studio
中新建控制台應用程式normalsubscriber
,新增m2mqtt
引用。program
類中如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using uplibrary.networking.m2mqtt;
using system.net;
using uplibrary.networking.m2mqtt.messages;
namespace normalsubscriber
,new
byte
);}static
void
client_mqttmsgpublishreceived
(object sender,
mqttmsgpublisheventargs e)
,content:"
, e.topic, encoding.utf8.
getstring
(e.message)))
;}}}
啟動mqtt
**端。(訂閱端和發布端啟動前必須保證**端已啟動)
啟動訂閱端normalsubscriber.exe
啟動發布端normalpublisher.exe
執行結果截圖如下:
可以看到,訂閱端接收到了發布端發布的訊息,訊息主題為/home/temperature
,訊息內容為hello mqtt
單向認證需要根證書和服務端證書
單向認證需要**端開啟ssl/tls,具體操作需要通過配置mosquitto.conf實現。
關於證書的生成和單向認證mosquitto.conf
的配置,請參考上一節 證書生成及mosquitto配置
visual studio
中新建控制台應用程式onewaypublisher
,新增m2mqtt
引用。program
類中如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.security.cryptography.x509certificates;
using uplibrary.networking.m2mqtt;
using uplibrary.networking.m2mqtt.messages;
namespace onewaypublisher))
;string clientid = guid.
newguid()
.tostring()
; client.
connect
(clientid)
;string strvalue = convert.
tostring
(content)
;// publish a message on "/home/temperature" topic with qos 2
client.
publish
(topic, encoding.utf8.
getbytes
(strvalue)
, mqttmsgbase.qos_level_exactly_once,
false);
console.
writeline
(string
.format
("publisher,topic:,content:"
, topic, content));}}}
visual studio
中新建控制台應用程式onewaysubscriber
,新增m2mqtt
引用。program
類中如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using uplibrary.networking.m2mqtt;
using uplibrary.networking.m2mqtt.messages;
using system.security.cryptography.x509certificates;
namespace onewaysubscriber))
;// register to message received
client.mqttmsgpublishreceived +
= client_mqttmsgpublishreceived;
string clientid = guid.
newguid()
.tostring()
; client.
connect
(clientid)
;// subscribe to the topic "/home/temperature" with qos 2
client.
subscribe
(new
string
,new
byte
);}static
void
client_mqttmsgpublishreceived
(object sender,
mqttmsgpublisheventargs e)
,content:"
, e.topic, encoding.utf8.
getstring
(e.message)))
;}}}
啟動mqtt
**端。(訂閱端和發布端啟動前必須保證**端已啟動)
啟動訂閱端onewaysubscriber.exe
啟動發布端onewaypublisher.exe
執行結果截圖如下:
可以看到,訂閱端接收到了發布端發布的訊息,訊息主題為/home/temperature
,訊息內容為hello mqtt
由於採取了單向認證,資料在傳輸過程中均為密文。訂閱端接收到訊息後,經過證書中的對稱加密演算法解密,就得到了我們需要的資料。
關於ssl單向認證和雙向認證原理可以參考
C 整合MQTT 發布 訂閱
服務端 服務端是乙個控制台應用 using mqttnet using mqttnet.core.adapter using mqttnet.core.diagnostics using mqttnet.core.protocol using mqttnet.core.server using sy...
python 連線mqtt發布和訂閱資訊
pip install paho mqttimport paho.mqtt.client as mqtt import json import time host 127.0.0.1 mqtt伺服器位址 port 1883 client id 101 客戶端id,自己設定 同時訂閱多個主題方式使用 ...
MQTT的訂閱和發布,新手通俗的理解
剛開始接觸物聯網,iot,mqtt,弄的一頭霧水,對於mqtt各方的身份和功能多有誤解,直到自己搞了一套東西,才知道 給個建議,在兩眼一抹黑,不了解架構的情況下,不要先看 否則你會無比痛苦,還是先通過工具進行系統推演。看來這個服務端類似乙個公告欄,裡面各種公告,甲跑過來說,凡是涉及足球的 publi...