网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > .Net >

使用C#连接MQTT 进行数据接收和数据处理,QoS1 持

时间:2025-02-24 16:16

人气:

作者:admin

标签:

导读:1、准备工作 在开始写代码之前,我们先要准备下写程序的 基础信息:MQTT地址、OrgID(机构ID)、API访问密钥 连接模式:QoS1, 持久会话 ,防止服务掉选数据丢失问题,具体模式根据实际情...

1、准备工作

在开始写代码之前,我们先要准备下写程序的

  基础信息:MQTT地址、OrgID(机构ID)、API访问密钥

  连接模式:QoS1, 持久会话 ,防止服务掉选数据丢失问题,具体模式根据实际情况而定

2、我们先创建个C#的控制台应用程序,然后写入以下代码:

// 创建MQTT客户端工厂
       var mqttFactory = new MqttFactory();
       var mqttClient = mqttFactory.CreateMqttClient();
 
       // 配置MQTT客户端选项
       var options = new MqttClientOptionsBuilder()
           .WithClientId("org-机构id-quickstart")  // 修改客户端ID
           .WithTcpServer("服务器地址", 1883) // 修改服务器地址,使用默认端口
           .WithCredentials("org-机构id", "秘钥") // 修改用户名
           .WithCleanSession(false)  // 添加这行,不清除会话
           .Build(); // 移除 TLS 配置,因为使用的是普通连接
 
       try
       {
           // 添加连接状态处理
           mqttClient.UseDisconnectedHandler(async e =>
           {
               Console.WriteLine("已断开连接!正在尝试重新连接...");
               await Task.Delay(TimeSpan.FromSeconds(5));
               try
               {
                   await mqttClient.ConnectAsync(options);
               }
               catch
               {
                   Console.WriteLine("重新连接失败");
               }
           });
 
           // 修改订阅主题以匹配您的格式
           string topic = "/device_sensor_data/机构id/+/+/+/+";
            
           // 添加订阅处理
           mqttClient.UseApplicationMessageReceivedHandler(e =>
           {
               string payload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
               string topic = e.ApplicationMessage.Topic ?? "";
                
               // 解析主题数据
               string[] topicParts = topic.Split('/');
               //将解析后的出具进行处理<br>
           });
 
           // 修改订阅配置
           var subscribeOptions = new MqttClientSubscribeOptionsBuilder()
               .WithTopicFilter(topic, MqttQualityOfServiceLevel.AtLeastOnce)
               .Build();
 
           // 连接后进行订阅
           await mqttClient.ConnectAsync(options);
           await mqttClient.SubscribeAsync(subscribeOptions);
           Console.WriteLine("已成功连接并订阅主题 (QoS1, 持久会话)");
 
 
           // 保持程序运行
           Console.WriteLine("按任意键退出...");
           Console.ReadKey();
 
           // 断开连接
           await mqttClient.DisconnectAsync();
       }
       catch (Exception ex)
       {
           Console.WriteLine($"发生错误: {ex.Message}");
       }

4、以下是程序接收到数据后的截图

 

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信