在C#中,可以使用MQTT客戶端庫來上傳數據,并通過訂閱相關主題來判斷是否成功。
首先,你需要使用NuGet包管理器安裝一個MQTT客戶端庫,如MQTTnet
。
然后,你可以使用以下代碼來上傳數據并判斷是否成功:
using System;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
class Program
{
static async Task Main(string[] args)
{
var factory = new MqttFactory();
var client = factory.CreateMqttClient();
var options = new MqttClientOptionsBuilder()
.WithTcpServer("localhost", 1883) // 設置MQTT服務器的地址和端口
.Build();
await client.ConnectAsync(options); // 連接到MQTT服務器
var message = new MqttApplicationMessageBuilder()
.WithTopic("topic") // 設置上傳數據的主題
.WithPayload("data") // 設置要上傳的數據
.WithExactlyOnceQoS() // 設置QoS為ExactlyOnce
.WithRetainFlag() // 設置Retain標志
.Build();
var result = await client.PublishAsync(message); // 上傳數據
if (result.ReasonCode == MqttClientPublishReasonCode.Success)
{
Console.WriteLine("數據上傳成功");
}
else
{
Console.WriteLine("數據上傳失敗");
}
await client.DisconnectAsync(); // 斷開與MQTT服務器的連接
}
}
在上述代碼中,首先創建了一個MQTT客戶端實例,并使用MqttClientOptionsBuilder
設置了MQTT服務器的地址和端口。然后使用ConnectAsync
方法連接到MQTT服務器。
接下來,使用MqttApplicationMessageBuilder
創建了一個上傳數據的消息,其中設置了主題、數據、QoS和Retain標志。
然后使用PublishAsync
方法上傳數據,并通過返回的MqttClientPublishResult
對象中的ReasonCode
屬性判斷上傳是否成功。
最后,使用DisconnectAsync
方法斷開與MQTT服務器的連接。