在.NET 8.0中使用MQTTnet开源库实现MQTT应用程序开发
创作时间:
作者:
@小白创作中心
在.NET 8.0中使用MQTTnet开源库实现MQTT应用程序开发
引用
CSDN
1.
https://blog.csdn.net/houbincarson/article/details/141270979
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛应用于物联网领域。本文将详细介绍如何在.NET 8.0中使用MQTTnet开源库开发MQTT应用程序,包括搭建MQTT Broker、安装MQTTnet库以及编写订阅者和发布者的具体代码。
1. 介绍
MQTTnet 是一个强大的开源 MQTT 客户端库,适用于 C# 平台。它提供了丰富的功能和灵活的 API,可以轻松地构建基于 MQTT 协议的应用程序。本文将逐步学习如何使用 MQTTnet 库创建 MQTT 客户端,并实现基本的发布、订阅功能。
简介
什么是MQTT?
MQTT的发布和订阅架构
2. 搭建MQTT Broker
在Windows 系统上搭建 MQTT Broker,前一篇文章Docker部署Eclipse Mosquitto开源MQTT的消息代理环境步骤(实践),我们使用docker搭建了Mosquitto环境。如果你觉得比较麻烦,也可以使用软件包来搭建环境。
具体的搭建步骤,可以查看官网。
3. 安装MQTTnet库
通过 NuGet 包管理器将 MQTTnet 库添加到我们的项目中。
4. 项目编码开发
1. MqttSubscriber项目
- 新建MqttSubscriber项目。
- 配置引用MQTTnet库
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MQTTnet" Version="4.3.3.952" />
<PackageReference Include="MQTTnet.Extensions.ManagedClient" Version="4.3.3.952" />
</ItemGroup>
</Project>
- 编写订阅代码
using System.Text;
using MQTTnet;
using MQTTnet.Client;
class Program
{
static async Task Main(string[] args)
{
var options = new MqttClientOptionsBuilder()
.WithTcpServer("localhost", 1883)
.WithCredentials("root","root")
.Build();
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
mqttClient.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync;
await mqttClient.ConnectAsync(options);
await mqttClient.SubscribeAsync("testtopic");
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
await mqttClient.DisconnectAsync();
}
private static Task MqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg)
{
Console.WriteLine($"Received message: {Encoding.UTF8.GetString(arg.ApplicationMessage.PayloadSegment)}");
return Task.CompletedTask;
}
}
2. MqttPublisher项目
- 新建MqttPublisher项目。
- 配置引用MQTTnet库
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MQTTnet" Version="4.3.3.952" />
<PackageReference Include="MQTTnet.Extensions.ManagedClient" Version="4.3.3.952" />
</ItemGroup>
</Project>
- 编写发布代码
using System;
using System.Text;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Extensions.ManagedClient;
class Program
{
static async Task Main(string[] args)
{
var options = new MqttClientOptionsBuilder()
.WithTcpServer("localhost", 1883)
.WithCredentials("root", "root")
.Build();
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
var managedMqttClient = new MqttFactory().CreateManagedMqttClient();
await managedMqttClient.SubscribeAsync("testtopic");
await mqttClient.ConnectAsync(options);
bool bcontinue = true;
while (bcontinue)
{
string input = $"{DateTime.Now.ToString("HH:mm:ss fff")}:{Guid.NewGuid().ToString()}";
Console.WriteLine(input);
var message = new MqttApplicationMessageBuilder()
.WithTopic("testtopic")
.WithPayload(Encoding.UTF8.GetBytes(input))
.WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce)
.WithRetainFlag()
.Build();
await mqttClient.PublishAsync(message);
}
await managedMqttClient.StopAsync();
}
}
- 调试运行
5. 参考文档
- MQTT - The Standard for IoT Messaging
- Getting started
- 在.NET7中使用MQTTnet简单实现MQTT通信 - 翔星 - 博客园
热门推荐
月费超百万、上厕所都跟着,揭秘马斯克的贴身保镖团
西班牙的盛衰:从世界霸权到衰落的历史转折
电脑硬件升级指南:如何提升电脑的整体性能?
Stacklands新手攻略:堆叠大陆实用技巧分享
霍胆丸能治好鼻炎吗?一篇文章带你了解其功效与适用范围
防止商标被抢注的有效策略与方法详细介绍
央视采访营养师:健康吃火锅的4大建议
3+证书高职高考:中职生打破职业天花板的关键跳板
世界五大禁书,如今都是诺贝尔文学奖神作!
大学生认为小说结局不如意,改编续集在网上发表被索赔13万元!调解结果来了
底层收益率下行、监管从严,多家理财子调低业绩比较基准“小目标”
10大宋词高手排行榜出炉,快来看看哪位词人的入选最让你意外!
三车同框见证中国铁路发展!网友:现实版“平行时空”
Excel会计实用计算操作技巧汇总
美国拉丁裔人口:从历史到现状的全面解析
晚餐减脂必收!6款低脂营养减肥汤,美味又饱腹
经济日报:钢铁业创新供给拓市场
什么是桃花运?从文化背景到提升方法的全面解析
椰皇的功效与作用有哪些
静电的力量:小现象引发大探索
傅佩荣教授讲解《道德经》第六十三章:以德报怨还是以直报怨(上)
战术板:这6种关键战术改变了足球发展的历史
一文读懂香港 DSE:定义、认可度与考试对比
华东师大二附中松江分校今年9月开学,首届面向松江区招收至少60人
全天持妆攻略:告别频繁补妆,打造持久无瑕妆容!
超声扫描显微镜:半导体尖端制造的“守护者”
30岁戴牙套会不会太晚?不会!分析下优势与挑战您看下!
创始团队合伙人如何招募
揭秘朝鲜民众移民韩国的可能性与现实困境,跨境生存挑战解析
简述道教神祇真武大帝:于宋兴盛,元代封玄天上帝,在明最为显赫