Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# mqtt

作者:二分醒amor   发布日期:2026-04-24   浏览:93

using System;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Disconnecting;
using MQTTnet.Client.Options;
using MQTTnet.Extensions.ManagedClient;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建一个 ManagedMqttClient 实例
        var mqttFactory = new MqttFactory();
        IManagedMqttClient mqttClient = mqttFactory.CreateManagedMqttClient();

        // 设置连接选项
        var options = new ManagedMqttClientOptionsBuilder()
            .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
            .WithClientOptions(new MqttClientOptionsBuilder()
                .WithTcpServer("broker.hivemq.com", 1883) // MQTT Broker 地址和端口
                .Build())
            .Build();

        // 订阅主题时的回调函数
        mqttClient.UseConnectedHandler(async e =>
        {
            Console.WriteLine("已连接到MQTT Broker");

            // 订阅主题
            var topicFilter = new TopicFilterBuilder().WithTopic("test/topic").Build();
            await mqttClient.SubscribeAsync(topicFilter);
            Console.WriteLine("已订阅主题: test/topic");
        });

        // 接收消息时的回调函数
        mqttClient.UseApplicationMessageReceivedHandler(e =>
        {
            Console.WriteLine($"收到消息: {e.ApplicationMessage.Topic} - {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
        });

        // 断开连接时的回调函数
        mqttClient.UseDisconnectedHandler(e =>
        {
            Console.WriteLine("已断开连接");
        });

        // 启动客户端并连接到Broker
        await mqttClient.StartAsync(options);

        Console.ReadLine(); // 阻塞主线程,防止程序退出

        // 停止客户端
        await mqttClient.StopAsync();
    }
}

解释说明:

  1. 创建 MQTT 客户端:使用 MQTTnet 库创建一个 ManagedMqttClient 实例。
  2. 设置连接选项:配置连接到 MQTT Broker 的参数,包括自动重连的时间间隔、Broker 的地址和端口等。
  3. 订阅主题:当客户端成功连接到 Broker 后,订阅指定的主题(如 test/topic)。
  4. 接收消息:定义接收消息时的回调函数,用于处理接收到的消息。
  5. 断开连接:定义断开连接时的回调函数,用于处理断开连接的情况。
  6. 启动和停止客户端:启动客户端并连接到 Broker,等待用户输入后停止客户端。

这段代码展示了如何使用 C# 和 MQTTnet 库与 MQTT Broker 进行通信。

上一篇:c# linq

下一篇:c# datagridview

大家都在看

c# 二进制

c# 创建目录

c# socket服务端连接多个客户端

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

c# invoke方法

.net和c#

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站