如何在 .Net 7 中使用 MQTT 客戶端

介紹?

????????MQTT(消息隊列遙測傳輸)是一種輕量級消息傳遞協議,專為資源受限的環境而設計。MQTT 廣泛應用于物聯網 (IoT) 和機器對機器 (M2M) 通信。

????????本文將討論如何在 .NET 7 中實現 MQTT 消費者。我們將使用 MQTTnet 庫,這是 C# 中的高性能 MQTT 客戶端庫。

設置環境

????????要開始使用 .NET 7,您必須在系統上安裝它。您可以從 .NET 官方網站下載并安裝 .NET 7。

????????要使用 MQTTnet,您需要將 MQTTnet NuGet 包添加到您的項目中。您可以使用 Visual Studio 中的 NuGet 包管理器或 dotnet CLI 來完成此操作。

dotnet add package MQTTnet

實現 MQTT 消費者

您需要創建一個新的控制臺應用程序來在 .NET 7 中實現 MQTT 消費者。在此示例中,我們將訂閱一個主題并從 MQTT 代理接收消息。

using System;
using System.Threading;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Subscribing;
using MQTTnet.Protocol;
class Program {
? ? static async Task Main(string[] args) {
? ? ? ? var factory = new MqttFactory();
? ? ? ? var client = factory.CreateMqttClient();
? ? ? ? var options = new MqttClientOptionsBuilder().WithTcpServer("localhost", 1883).WithClientId("mqtt_consumer").Build();
? ? ? ? client.UseConnectedHandler(async e => {
? ? ? ? ? ? Console.WriteLine("Connected to MQTT broker.");
? ? ? ? ? ? var topicFilter = new MqttTopicFilterBuilder().WithTopic("test/topic").Build();
? ? ? ? ? ? await client.SubscribeAsync(new MqttClientSubscribeOptionsBuilder().WithTopicFilter(topicFilter).Build());
? ? ? ? });
? ? ? ? client.UseDisconnectedHandler(async e => {
? ? ? ? ? ? Console.WriteLine("Disconnected from MQTT broker.");
? ? ? ? ? ? await Task.Delay(TimeSpan.FromSeconds(5));
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? await client.ConnectAsync(options, CancellationToken.None);
? ? ? ? ? ? } catch {
? ? ? ? ? ? ? ? Console.WriteLine("Reconnecting to MQTT broker failed.");
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? client.UseApplicationMessageReceivedHandler(e => {
? ? ? ? ? ? Console.WriteLine($ "Received message on topic '{e.ApplicationMessage.Topic}': {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
? ? ? ? });
? ? ? ? try {
? ? ? ? ? ? await client.ConnectAsync(options, CancellationToken.None);
? ? ? ? } catch {
? ? ? ? ? ? Console.WriteLine("Connecting to MQTT broker failed.");
? ? ? ? }
? ? ? ? Console.ReadLine();
? ? }
}

????????上述代碼創建了一個新的 MQTT 客戶端,并訂閱了“test/topic”主題。當收到該主題的消息時,會調用 UseApplicationMessageReceivedHandler 方法,并在控制臺上顯示該消息。

????????UseConnectedHandler 和 UseDisconnectedHandler 方法處理連接和斷開連接事件。當客戶端連接到 MQTT 代理時會調用 UseConnectedHandler 方法,當客戶端與 MQTT 代理斷開連接時會調用 UseDisconnectedHandler 方法。

結論

????????在本文中,我們討論了如何使用 MQTTnet 庫在 .NET 7 中實現 MQTT 消費者。我們創建了一個控制臺應用程序,用于訂閱主題并從 MQTT 代理接收消息。

????????MQTT 是一種功能強大的消息傳遞協議,可用于各種應用,包括物聯網 (IoT) 和 M2M 通信。借助 MQTTnet 庫,可以輕松地在 .NET 7 中實現 MQTT 客戶端,并且該庫提供了一系列功能。

如果您喜歡此文章,請收藏、點贊、評論,謝謝,祝您快樂每一天。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912440.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云上攻防—Docker安全容器逃逸特權模式危險掛載

前言 之前分享的是云服務安全,今天開始云原生安全,安全道路依舊很長。 什么是Docker呢,它是開源的容器化平臺,用于開發、部署和運行應用程序。它通過將應用程序及其依賴項打包在輕量級的容器中,實現環境一致性、快速…

2025API 開發工具Apipost 與 Apifox深度對比

在當今數字化時代,API 開發是構建各類軟件應用的關鍵環節。Apipost 和 Apifox 作為兩款知名的 API 開發工具,它們在實際開發場景中表現究竟如何呢?接下來,讓我們從多個功能點進行深入對比。 一、API 設計功能 接口定義與參數設置…

從零開始搭建Windows AI開發環境:QWQ-32B部署+Cursor插件優化實戰

文章目錄 前言1.安裝Ollama2.QwQ-32B模型安裝與運行3.Cursor安裝與配置4. 簡單使用測試5. 調用本地大模型6. 安裝內網穿透7. 配置固定公網地址總結 前言 本方案提出了一種基于Windows系統的智能化開發平臺搭建策略,通過融合Cursor智能編程平臺、Ollama模型運行框架…

PostgreSQL 中,若需顯示 不在 `IN` 子句列表中的數據

在 PostgreSQL 中,若需顯示 不在 IN 子句列表中的數據,可以通過以下方法實現: 方法 1:使用 NOT IN(注意 NULL 值) 直接篩選不包含在 IN 列表中的記錄: SELECT * FROM your_table WHERE your_c…

嘉訊科技:醫療信息化、數字化、智能化三者之間的關系和區別

隨著技術的不斷發展,醫療行業也在發生著巨大的變化。在這個過程中,醫療信息化、數字化、智能化成為三個重要方向。這些變化不僅帶來了醫療技術的進步,而且大大提高了醫療服務的質量和效率。 一、醫療信息化 醫療信息化是指醫療行業應用信息技…

Windows VMWare Centos Docker部署Springboot應用

接上篇文章:Windows VMWare Centos環境下安裝Docker并配置MySql-CSDN博客文章瀏覽閱讀370次,點贊3次,收藏4次。Windows VMWare Centos環境下安裝Docker并配置MySqlhttps://blog.csdn.net/u013224722/article/details/148928081 一、新建Sprin…

JavaEE-Spring事務和事務的傳播機制

事務 什么是事務 事務是?組操作的集合, 是?個不可分割的操作. 事務會把所有的操作作為?個整體, ?起向數據庫提交或者是撤銷操作請求. 所以這組操作要么同時成功, 要么同時失敗. 為什么需要事務? 事務的操作 Spring 中事務的實現 創建好數據庫后就是配置數據庫相關的配…

共享經濟視域下社群經濟的本質重構:基于開源AI智能名片鏈動2+1模式S2B2C商城小程序源碼的實證研究

摘要:社群經濟在互聯網時代呈現爆發式增長,但傳統社群運營存在情感維系成本高、商業轉化路徑長、技術賦能不足等痛點。本文以共享經濟理論為框架,結合開源AI智能名片鏈動21模式S2B2C商城小程序源碼的技術實踐,提出“思想-資源-機會…

測試方法的分類

靜態測試 核心分類依據:根據是否執行程序分為靜態測試和動態測試 靜態測試方法 執行特征:不運行被測程序,通過人工檢查或工具分析進行測試 測試對象:主要針對文檔(包括需求文檔、設計文檔等)和源代碼 實…

查看CPU支持的指令集和特性

1)gcc -c -Q -marchnative --helptarget 2)結果 The following options are target specific: -m128bit-long-double [enabled] -m16 [disabled] -m32 [disabled…

【大模型應用開發】Unity結合大模型實現智能問答功能

零、最終效果 Unity結合大模型實現智能問答功能 一、文本自動換行效果 新建一個Text文本,設置文本的最大寬度 然后添加Content Size Fitter組件,Vertical Fit選擇Preferred Size 二、背景隨文本長度變化效果 新建一個Image作為文本的背景&#xff0…

Python爬蟲-爬取汽車之家全部汽車品牌及車型數據

前言 本文是該專欄的第64篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文,筆者將基于汽車之家平臺,通過Python獲取全部的“汽車品牌以及車型”數據。 廢話不多說,具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。接下來,跟著筆者直接往下看正文詳…

簽名組件:uniapp 簽名組件開發,兼容小程序、H5、App等 電子簽名

描述 H5:1. 模擬橫屏。2. 提示信息、模擬態也通過模擬橫屏顯示 小程序:1. 自動橫屏展示 APP:1. 自動橫屏展示 rn-signature 個性簽名組件 組件名 rn-signature 簽名組件兼容H5、APP、小程序。橫屏簽名效果。 效果展示 h5端 小程序端 APP 端…

第10.4篇 使用預訓練的目標檢測網絡

在PyTorch提供的已經訓練好的圖像目標檢測中,均是R-CNN系列 的網絡,并且針對目標檢測和人體關鍵點檢測分別提供了容易調用的方 法。針對目標檢測的網絡,輸入圖像均要求使用相同的預處理方式,即先將每張圖像的像素值預處理到0~1之…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序源碼的運營機制沉淀與規范構建研究

摘要:在數字化商業生態中,運營機制的沉淀與規范構建是企業實現可持續增長的核心命題。本文以開源鏈動21模式、AI智能名片、S2B2C商城小程序源碼為技術基座,提出“機制設計-數據沉淀-規范生成-迭代優化”的四階閉環模型。通過某健康食品品牌的…

js代碼05

題目 好的,我們進入異步編程的“終極形態”:async/await。 async/await 是在 ES2017 (ES8) 中引入的,它并不是一個全新的功能,而是建立在 Promise 之上的語法糖 (Syntactic Sugar)。它的目標是讓我們能夠以一種看似同步、更符合…

PyTorch里.pt和.pth的區別

在PyTorch中,.pt和.pth文件均用于保存模型,但兩者在設計初衷、存儲內容和使用場景上存在差異。以下是詳細對比: 1. 核心區別 特性.pt文件.pth文件存儲內容完整模型(結構參數優化器狀態等)僅模型參數(state…

windows電腦如何安裝iis作為部署服務器并

1.控制面板-程序-啟用或關閉windows功能-勾選iis(縮寫) 2.安裝好iis后在開始中搜索iis就可以看見安裝好了的管理器了

解鎖ChatGPT高級玩法:模塊化提示詞庫開發指南

目錄 🔍 一、引言:為什么需要模塊化提示詞庫?🧱 二、模塊化提示詞庫設計原理2.1 核心架構2.2 模塊功能說明 ?? 三、模塊化提示詞庫開發實踐(附Python源碼)3.1 環境配置3.2 模塊化提示詞生成器3.3 提示詞組…

Spring Boot 實現不同用戶不同訪問權限

前提 近期在使用 Spring Boot,用戶角色被分為管理者和普通用戶;角色不同,權限也就存在不同。 在 Spring Boot 里實現不同用戶擁有不同訪問權限,可借助 Spring Security 框架達成。 實現 1. 添加必要依賴 首先要在 pom.xml 里…