using MQTTnet; using MQTTnet.Client; using MQTTnet.Packets; using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Windows.Forms; namespace Sample_MQTT_Client { public partial class Form1 : Form { IMqttClient mqttClient; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ReceiveData(); } public async void ReceiveData() { //不等空,断开连接 if (mqttClient == null) { var factory = new MqttFactory(); mqttClient = factory.CreateMqttClient(); var options = new MqttClientOptionsBuilder() .WithTcpServer("192.168.240.53", 1883) .Build(); await mqttClient.ConnectAsync(options); var subOption = new MqttClientSubscribeOptions() { TopicFilters = new List<MqttTopicFilter> { new MqttTopicFilterBuilder() .WithTopic("ShuttleLoom") .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce) .Build() } }; await mqttClient.SubscribeAsync(subOption); mqttClient.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync; } else { await mqttClient.DisconnectAsync(); } } private Task MqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg) { try { string data = arg.ApplicationMessage.ConvertPayloadToString(); string strdata = "\n获得数据:" + "\n" + data + "\n"; //this.txtData.Text = strdata; this.txtData.Invoke( new Action(() => { this.txtData.Text += strdata; })); } catch (Exception) { } return null; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); } } }