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

这篇具有很好参考价值的文章主要介绍了在.NET7中使用MQTTnet简单实现MQTT通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、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来使用其它功能。希望本文能对你带来收获,欢迎留言和吐槽。文章来源地址https://www.toymoban.com/news/detail-409489.html

来源公众号:DotNet开发跳槽

到了这里,关于在.NET7中使用MQTTnet简单实现MQTT通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第1章 .Net7 Areas实现

    1 集成路由匹配模式 var builder = WebApplication . CreateBuilder ( args ); // Add services to the container. builder . Services . AddControllersWithViews (); var app = builder . Build (); // Configure the HTTP request pipeline. if (! app . Environment . IsDevelopment ()) {     app . UseExceptionHandler ( \\\"/Home/Error\\\" );     // The default HSTS va

    2024年02月03日
    浏览(47)
  • .NET7的AOT的使用

    其实,规划这篇文章有一段时间了,但是比较懒,所以一直拖着没写。 最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。 本文主要介绍如何在 .NET 和 Go 语言中如何生成系统(Windows)动态链接库,又如何从代码中引

    2024年02月04日
    浏览(39)
  • .net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃

        在一个网站内,用一套proto即提供gPRC 调用,又提供 Web API 调用。     根据微软官方James Newton King(Newtonsoft.json 作者)的文章,.net7 里面提供了 JsonTranscoding 特性,只需要三步(翻译自链接中的文档): 第一步用vs2022创建一个 .net7的 gRPC service Create a gRPC client and service 第

    2024年02月02日
    浏览(41)
  • 物联网通信协议-MQTT及使用python实现

    简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的\\\"轻量 级\\\"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作

    2024年02月10日
    浏览(48)
  • Java 使用 EMQX 实现物联网 MQTT 通信

    EMQX 实现物联网 MQTT 通信。物联网的 MQ 消息通信方式。 MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的\\\"轻量级\\\"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,

    2024年02月03日
    浏览(39)
  • 一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享

    接上篇 docker-bind 的使用搭建了一个 dns 服务,本篇将介绍另外一款 DnsServer 的部署和使用,更专注,更轻量。 基于 .NET 7 实现 ,支持 Windows、Linux、macOS 和 Raspberry Pi 开箱即用,使用简单,高性能 提供 Web 控制台,可视化管理,查看使用情况 提供了对网络的额外控制,允许阻止

    2024年02月05日
    浏览(46)
  • ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)

    即时通 信 ( I nstant M essage), 由于其具有 实时性、跨平台性、成本低、效率高等优点 而受到广泛的使用。设计并实现 一个能够处理 多用 户进行实时、安全的即时通 信系统 具有较强的现实意义。即时 通信 的底层 通信是 通过SOCKE T套接 字接口实现 的 。当前的主流UNIX系统和

    2024年02月09日
    浏览(67)
  • .Net6 .Net7 支持的 Windows 版本

    .NET 6 支持下列 Windows 版本: (OS) Version 体系结构 Windows 11 21H2 x64、Arm64 Windows 10 客户端 1607+ x64、x86、Arm64 Windows 客户端 7 SP1+、8.1 x64、x86 Windows Server 2012+ x64、x86 Windows Server 核心 2012+ x64、x86 Nano Server 1809+ X64 如果要在以下 Windows 版本上安装 .NET SDK 或运行时,则需要其他依赖项:

    2024年02月16日
    浏览(36)
  • 单片机与阿里云的mqtt简单通信(塔石nb-iot篇)

    目录 前期准备: 阿里云部分 塔石部分 单片机部分 这篇文章主要记录了一次单片机通过塔石的模块,实现与阿里云的mqtt通信(仅能简单传递信息,不涉及更深入操作)的过程。 其中会包括如,阿里云物联网平台中“产品”与“设备”的创建,塔石nb-iot模块的使用等。 1.塔石

    2024年02月09日
    浏览(44)
  • Debian12安装.NET7 SDK

    Debian,作为最受欢迎的 Linux 发行版之一,于 2023 年 6 月 10 日正式发布了其最新版本 Debian 12,代号“Bookworm”。Debian 12 带来了许多新特性和改进,其中最引人注目的是 Linux 内核的升级,从之前的 5.10 LTS 升级到了 6.1。 这两天尝试了一下Debian12。准备配置一个开发环境,将各类

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包