How can you determine if data has been successfully uploaded via MQTT in C#? C#でMQTTを使ったデータのアップロードが成功したかどうかを判断する方法は何ですか?
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サーバーとの接続を切断します。