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

mqtt c#

作者:幸福的起点   发布日期:2025-10-11   浏览:72

using System;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Disconnecting;
using MQTTnet.Client.Options;
using MQTTnet.Protocol;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建一个MQTT客户端工厂
        var factory = new MqttFactory();
        var mqttClient = factory.CreateMqttClient();

        // 配置客户端连接选项
        var options = new MqttClientOptionsBuilder()
            .WithTcpServer("broker.hivemq.com")  // MQTT代理服务器地址
            .WithClientId(Guid.NewGuid().ToString())  // 客户端ID
            .WithCleanSession()  // 使用干净会话
            .Build();

        // 订阅主题时的回调函数
        mqttClient.UseConnectedHandler(async e =>
        {
            Console.WriteLine("Connected to MQTT broker");

            // 订阅主题 "test/topic"
            var subscribeOptions = new MqttTopicFilterBuilder()
                .WithTopic("test/topic")
                .Build();

            await mqttClient.SubscribeAsync(subscribeOptions);
            Console.WriteLine("Subscribed to topic: test/topic");
        });

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

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

        // 连接到MQTT代理
        await mqttClient.ConnectAsync(options);

        // 发布消息到主题 "test/topic"
        var message = new MqttApplicationMessageBuilder()
            .WithTopic("test/topic")
            .WithPayload("Hello MQTT World!")
            .WithExactlyOnceQoS()  // QoS级别为2
            .Build();

        await mqttClient.PublishAsync(message);
        Console.WriteLine("Published message: Hello MQTT World!");

        // 等待一段时间再断开连接
        await Task.Delay(TimeSpan.FromSeconds(10));
        await mqttClient.DisconnectAsync();
    }
}

解释说明:

  1. 引入命名空间:使用 MQTTnet 库中的相关类。
  2. 创建MQTT客户端:通过 MqttFactory 创建一个 MQTT 客户端实例。
  3. 配置连接选项:设置连接到 MQTT 代理服务器的参数,包括服务器地址、客户端ID和是否使用干净会话。
  4. 订阅主题:当成功连接到代理后,订阅指定的主题(例如 "test/topic")。
  5. 接收消息:定义接收消息时的处理逻辑,将接收到的消息内容打印到控制台。
  6. 断开连接:定义断开连接时的处理逻辑。
  7. 发布消息:向指定主题发布一条消息,并设置 QoS 级别。
  8. 等待并断开:等待一段时间后主动断开与代理的连接。

这段代码展示了如何使用 C# 和 MQTTnet 库来实现基本的 MQTT 客户端功能,包括连接、订阅、接收和发布消息。

上一篇:c# 向下取整

下一篇:c#在线

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

c# rectangle

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

Laravel 中文站