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();
}
}
MQTTnet 库创建一个 ManagedMqttClient 实例。test/topic)。这段代码展示了如何使用 C# 和 MQTTnet 库与 MQTT Broker 进行通信。
上一篇:c# linq
下一篇:c# datagridview
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站