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();
}
}
MQTTnet
库中的相关类。MqttFactory
创建一个 MQTT 客户端实例。"test/topic"
)。这段代码展示了如何使用 C# 和 MQTTnet 库来实现基本的 MQTT 客户端功能,包括连接、订阅、接收和发布消息。
上一篇:c# 向下取整
下一篇:c#在线
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站