文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在.NET7中使用MQTTnet简单实现MQTT通信

2023-09-11 18:18

关注

一、MQTT简介

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,主要用于物联网设备间的通信。MQTT协议采用客户端/服务器架构,支持发布/订阅模式和点对点模式,具有高效、可靠、灵活等优点。

MQTT协议主要由三个要素构成:发布者(publisher)、代理服务器(broker)和订阅者(subscriber)。发布者将消息发布到代理服务器上,订阅者从代理服务器中订阅消息,代理服务器将消息发送给订阅者。MQTT协议中还有一个重要的概念是主题(topic),主题用于定义消息的类型和内容,发布者可以将消息发布到一个或多个主题上,订阅者可以订阅一个或多个主题的消息。

MQTT协议可以在不可靠的网络上以低带宽传输大量消息,适用于各种类型的物联网应用,例如智能家居、车联网、工业物联网等。由于其轻量级、可靠性高、快速响应等优点,MQTT协议在物联网领域得到了广泛的应用。

二、MQTTnet简介

MQTTnet 是一个跨平台、高性能和开源的 MQTT 客户端库和服务端实现,是 .NET 平台上主流的 MQTT 实现之一。基于 MQTTnet,用户可以方便地在 .NET 平台上集成 MQTT 功能,实现 MQTT 协议的消息传输等功能。

源码地址:https://github.com/dotnet/MQTTnet

三、在.NET7中使用MQTTnet****

1、项目准备

首先创建两个.NET7控制台项目,用来简单实现发布消息订阅功能。一个项目为服务端,一个客户端。

然后安装MQTTnet 包,我们这里选择安装3.12版本,MQTTnet跨版本差距比较大。大家可以在Nuget包管理器里安装,也可以用命令安装。

dotnet add package MQTTnet --3.12

2、服务端代码编写

编写服务端代码,片段代码如下:

 public static async Task MQTTP()        {            var factory = new MqttFactory();            var client = factory.CreateMqttClient();            var options = new MqttClientOptionsBuilder()                .WithTcpServer("localhost", 1883)                .Build();            await client.ConnectAsync(options);            while (true)            {                Console.WriteLine("输入要发布的信息: ");                var message = Console.ReadLine();                var mqttMessage = new MqttApplicationMessageBuilder()                    .WithTopic("testTopic")                    .WithPayload(Encoding.UTF8.GetBytes(message))                    .WithExactlyOnceQoS()                    .Build();                await client.PublishAsync(mqttMessage);            }        }    //调用    static async Task Main(string[] args)    {        #region 测试        await  MQTTP();        #endregion    }

3、客户端代码编写

在客户端编写如下代码:

  public static async Task MQTTClientTest()        {            var factory = new MqttFactory();            var client = factory.CreateMqttClient();            var options = new MqttClientOptionsBuilder()                .WithTcpServer("localhost", 1883)                .Build();            client.UseApplicationMessageReceivedHandler(e =>            {                Console.WriteLine($"接收的消息: {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");            });            await client.ConnectAsync(options);            await client.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("testTopic").Build());        }     //调用    static async Task Main(string[] args)    {        #region 测试        await MQTTClientTest();        #endregion    }

这样就简单完成了发布订阅的功能,在这个示例中,发布者将消息发布到"testTopic"主题,订阅者订阅了相同的主题,一旦有新消息到达,就会打印出来。这只是一个简单的示例,实际的MQTT使用根据具体的项目场景来使用,比如异常处理等。

4、使用条件和方法:

首先在官网下载安装MQTT,官网为:https://mqtt.org/。

然后把项目的端口号改成mqtt配置的端口。同时运行两个项目就可以尝试了。大家可以拿上面代码尝试一下。

结语

本文介绍了MQTT在.NET7的简单使用,MQTT还有很多功能,大家可以根据MQTTnet 的API来使用其它功能。希望本文能对你带来收获,欢迎留言和吐槽。

来源公众号:DotNet开发跳槽

来源地址:https://blog.csdn.net/xbhp1984/article/details/130057173

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯