.Net Mqtt程序

.net core 实现websocket 分组通信 在MQTT项目中服务器端使用Websocket进行分组通信,向客户端发送实时数据,服务器端采用.net core 6架构 阅读详情

最近做物联网,客户的设备使用mqtt协议,所以研究了一下这个东西

说下遇到的问题,以及解决

前面在网络中总是搜索的都是.netCore的例子,然后发现一个问题,没解决,

使用MqttServer,没办法进行发布主题,然后就是这个.NetCore用的不多,是个控制台程序,不熟练,感觉控制不住,后面就又换了一个库。

后面找到一个强大的库,里面封装的物联网的东西挺多的,希望给大家一些帮助库名称:HslCommunication

大家可以去下载看看,这个里面什么websocket,mqtt等很多物联网的协议都封装了,又一种相恨见晚的感觉,以后就用这个开发,不是方便了很多,并且这个还是一个.NetFramework的库,用起来也是很方便。

后面的确是设备数据都接上来了,但是又有一个关于线程的问题,多个线程同时访问的问题,时不时就导致程序奔溃了,这个问题不是库的问题,是我自己写的问题,后面查找资料,终于也是解决了,这里记录一下,

程序中使用了多个线程进行访问一个公有的集合,导致程序出现问题,后面使用了锁(Lock)进行解决。话不多说,上代码吧

 //创建mqttSever
if (mqttServer == null)
   {

                mqttServer = new MqttServer();
                mqttServer.Port = port;

                mqttServer.OnClientApplicationMessageReceive += MqttServer_OnClientApplicationMessageReceive;
                mqttServer.OnClientConnected += MqttServer_OnClientConnected;
                mqttServer.OnClientDisConnected += MqttServer_OnClientDisConnected;
               

                mqttServer.ServerStart();



               
 }
//发布主题,针对某一个客户端进行发布,库里有很多方法,大家可以进行查看
  public void Publish(string clientid,string top,string payload)
        {
           
            mqttServer.PublishTopicPayload(clientid,top, Encoding.UTF8.GetBytes(payload));
           
        }

//收到消息的内容都是在这里
 private void MqttServer_OnClientApplicationMessageReceive(MqttSession session, MqttClientApplicationMessage message)
        {
           
                var msg = @"发送消息的客户端id:" + session.ClientId + "\r\n"
               + "发送时间:" + DateTime.Now + "\r\n"
               + "发送消息的主题:" + message.Topic + "\r\n"
              + "发送的消息内容:" + Encoding.UTF8.GetString(message.Payload ?? new byte[0]) + "\r\n"
              + "--------------------------------------------------\r\n" ;
                showtext = msg;
 
            
    }

最后说下这个锁的应用

你想要让线程访问某一个变量需要排队,就将某一个变量进行上锁,这里需要将所有用到改变量的代码出都写上锁,不然还会出现问题

//我这里需要移除离线的设备
  lock (onlineArr)
            {
                onlineArr.Remove(session.ClientId);
            }
//这个是在收到消息后的方法里面,同样加上锁,进行添加上线的设备 
lock(onlineArr)
            {
                onlineArr.Add(session.ClientId);
}

大致就是这样,大家有什么懂可以留言

使用winforms实现一个mqtt的客户端程序 阅读详情

相关推荐

Python 使用MQTT协议将硬件端数据传输至微信小程序并呈现

最近在做一个系统。大体需求是用运动手环获取用户的心率,体温等数据,然后传输到微信小程序页面上进行呈现。个人负责系统的软件端编写,因为第一次接触MQTT协议,所以来做个简单的记录。 1. MQTT客户端安装 这里参考了1-4 MQTT服务端连接操作 – 太极创客的教程,我选择了款免费的MQTT客户端软件–MQTTfx。MQTTfx的官网地址是:http://mqttfx.org。安装过程不再赘述。 点开mqttfx.exe,进入MQTTfx界面。点击设置按钮。 Profile Name随便取。

weixin_50321412的博客 1825

C#使用MQTT通信 .Net实现MQTT通信 java使用MQTT通信 java实现MQTT通信 MQTT发送、订阅 c# java开发MQTT完整资料 不关注MQTT底层,只关注如何通信

发布者发布消息时,需要指定该消息的Topic,订阅者订阅Topic后就可以接收到发布者发布的消息。订阅者需要订阅指定的Topic,以便接收到发布者发布的消息。订阅时需要指定Topic和消息的QoS(服务质量),QoS分为0、1、2三个级别,级别越高,消息传输的可靠性越高。总之,MQTT是一种非常灵活和高效的通信协议,适用于许多不同的应用场景,包括物联网、传感器网络、实时消息传递等等。MQTT采用简单的二进制消息格式,协议本身非常轻量,不会占用过多的网络带宽和设备资源,适合于物联网设备间的通信。

weijia3624的专栏 1万+

开发指南:使用 MQTTNet 库构建 .Net 物联网 MQTT 应用程序

本文介绍了如何使用MQTTnet库连接EMQX Serverless MQTT消息服务器。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 2449

在.NET7中使用MQTTnet简单实现MQTT通信

MQTT协议中还有一个重要的概念是主题(topic),主题用于定义消息的类型和内容,发布者可以将消息发布到一个或多个主题上,订阅者可以订阅一个或多个主题的消息。这样就简单完成了发布订阅的功能,在这个示例中,发布者将消息发布到"testTopic"主题,订阅者订阅了相同的主题,一旦有新消息到达,就会打印出来。这只是一个简单的示例,实际的MQTT使用根据具体的项目场景来使用,比如异常处理等。本文介绍了MQTT在.NET7的简单使用,MQTT还有很多功能,大家可以根据MQTTnet 的API来使用其它功能。

软件开发学习交流 2727

MQTTnet:MQTTnet是用于基于MQTT的通信的高性能.NET库。 它提供了一个MQTT客户端和一个MQTT服务器(代理)。 该实现基于http://mqtt.org上的文档

MQTTnet MQTTnet是用于基于MQTT的通信的高性能.NET库。 它提供了一个MQTT客户端和一个MQTT服务器(代理)。 该实现基于的文档。 产品特点 一般 异步支持 客户端和服务器(但不支持UWP服务器)的TLS支持 扩展的通信渠道(例如内存,TCP,TCP + TLS,WS) 轻量级(仅MQTT的低级实现,无开销) 性能优化(每秒处理约70.000条消息)* 跨所有受支持的MQTT协议版本的统一API 包含用于模拟和测试的接口 访问内部跟踪消息 单元测试(约250个测试) 没有外部依赖 *在使用MQTTnet客户端和服务器在同一进程中使用TCP通道运行的本地计算机(

Pure Persuit算法基础

Pure Persuit算法本身的原理不难理解,它主要基于几何原理进行的设备控制,本身不考虑太多的运动学约束。同时机器人的路径跟踪效果应该会比较依赖于预瞄点。对于曲线部分而言,如果曲率很小而预瞄点很远的话,对于曲线的跟随性应该会很差。对于直线而言,如果设备在开始时与轨迹有横向偏差,则在运动过程中机器人会逐渐收敛到曲线,但是收敛速度取决于预瞄点距离。

YiYeZhiNian的博客 1522

.NET之MQTT MQTTnet包的使用 订阅发布 自连接

本文介绍了.NET环境中MQTT的连接以及订阅和发布 ,前面写过类似文章,但是部分方法在新版本中被弃用,且应用方法不够完善,本文在应用中进行了进一步的优化。在这里主要介绍MQTTnet的使用。

weixin_46540714的博客 3643

通过 Android Framework 调用高通 Perf HAL 实现 CPU/GPU 动态调频策略

本文详细介绍了如何通过Android Framework调用高通Perf HAL实现CPU/GPU动态调频策略。文章涵盖HAL交互原理、环境搭建、Power HAL接口实现、PerformanceHintManager应用及温度功耗平衡处理,帮助开发者安全高效地进行性能优化,避免直接操作底层硬件的风险。

keras9composer的博客 257

一个用于.NET的高性能MQTT类库

在当今的物联网时代,MQTT(Message Queuing Telemetry Transport)协议已经成为了连接各种设备和系统的主流协议之一。对于.NET开发者来说,选择一个高性能、稳定且易于使用的MQTT库至关重要。今天,我们将为大家推荐一个高性能的.NET库——MQTTnet。MQTTnet简介MQTTnet是一个基于.NET平台的开源库,提供了对MQTT协议的全面支持。它具有简单易用...

dotNET跨平台 695

告别电源纹波!手把手教你用UCC28019设计一个高效率PFC模块(附完整原理图与BOM清单)

本文详细介绍了如何使用UCC28019设计高效率PFC模块,解决电源纹波问题。通过优化补偿网络、关键元器件选型及PCB布局,实现功率因数提升至0.99以上,降低输入电流谐波。附完整原理图与BOM清单,适用于电赛等快速开发场景。

weixin_42652674的博客 335

联想ThinkPad声卡驱动安装避坑指南:从E470到X1 Carbon的通用解法

本文详细介绍了ThinkPad声卡驱动安装的全流程,从硬件识别到驱动获取、安装技巧及深度排错。涵盖E470到X1 Carbon等不同机型的通用解法,帮助用户解决音频驱动问题,提升使用体验。重点讲解了声音驱动的精准识别和安装策略,确保系统稳定运行。

weixin_29207439的博客 709

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布

MQTTnet 是一个强大的开源 MQTT 客户端库,适用于 C# 平台。它提供了丰富的功能和灵活的 API,可以轻松地构建基于 MQTT 协议的应用程序。

若有博文对您有帮助,欢迎点赞关注,收藏评论。 1162

从接线到组态:手把手教你搞定PROFIBUS-DP与PA的混合网络搭建(基于西门子TIA Portal)

本文详细介绍了PROFIBUS-DP与PA混合网络的搭建方法,基于西门子TIA Portal平台,从硬件选型、网络架构设计到组态配置和现场调试,提供了一套完整的实战指南。重点解析了DP/PA耦合器的使用、地址映射策略及网络诊断技巧,帮助工程师高效构建高可靠性的工业自动化网络。

weixin_32103009的博客 302

搭建EMQX MQTT服务器并接入Home Assistant和.NET程序

通过本文的介绍,我们已经成功搭建了 EMQX MQTT 服务器,并将其接入到 Home Assistant 中,同时也演示了如何使用 .NET 接入 MQTT。希望这篇文章能帮助你更好地理解和使用 MQTT 协议,在你的智能家居项目中发挥更大的作用。后续我们将继续介绍在 .nanoFramework 中的使用,以及通过 MQTT 在 Home Assistant 中创建自定义的智能家居设备,敬请期待。

桑榆肖物 2000

从零构建智能监控系统:ZLMediaKit与SpringBoot的RTSP流处理实战

本文详细介绍了如何从零构建智能监控系统,结合ZLMediaKit与SpringBoot实现RTSP流处理。通过多协议支持、高性能架构设计及工业级部署优化,解决传统监控方案的兼容性差、延迟高等问题,适用于物联网和智能安防领域。

weixin_29002209的博客 370

保姆级教程:用Wokwi玩转ESP32 MicroPython仿真(含库文件配置指南)

本教程详细介绍了如何使用Wokwi平台进行ESP32 MicroPython仿真开发,包括库文件配置、传感器数据模拟和REPL调试技巧。通过Wokwi的仿真调试系统,开发者可以在浏览器中快速验证代码逻辑,提高开发效率,特别适合物联网项目的快速迭代。

weixin_29195615的博客 446

在Net8.0中使用 MQTTnet 开源库实现 MQTT 应用程序开发(实践)

MQTTnet 是一个强大的开源 MQTT 客户端库,适用于 C# 平台。它提供了丰富的功能和灵活的 API,可以轻松地构建基于 MQTT 协议的应用程序。本文将逐步学习如何使用 MQTTnet 库创建 MQTT 客户端,并实现基本的发布、订阅功能。简介什么是MQTT?MQTT的发布和订阅架构。

dotnet研习社 5760

2024年游戏策划最新面试题及答案

1. **游戏策划**:负责游戏设计和开发的创意和技术过程。2. **主要职责**:设计游戏玩法、故事、角色、世界等。4. **游戏机制**:定义玩家如何与游戏世界互动的规则。13. **引人入胜的角色**:深入的背景故事、个性特征。3. **游戏平衡**:确保游戏公平、有趣且具有挑战性。7. **RPG特点**:角色发展、故事驱动、玩家选择。12. **关卡设计技巧**:挑战性、流动性、视觉引导。11. **游戏关卡设计**:创建游戏世界的不同阶段。5. **游戏循环**:玩家在游戏中重复的行为模式。

guo162308的博客 2320

mqttnet 详解_MQTT MQTTnet 实现

【实例简介】MQTTnet .NET库实现的MQTT 客户端和服务端代码,源程序。可以执行。【实例截图】【核心代码】MQTT└── MQTT├── MQTT│ ├── MQTTServer.csproj│ ├── Program.cs│ ├── bin│ │ └── Debug│ │ └── netcoreapp2.0│ │ ├── M...

weixin_29010003的博客 1193

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MQTT——具有.NET Core的消息队列遥测传输协议

目录 介绍 什么是MQTT REST是什么? 体系结构 有效载荷 安全 代码样例 代理 发布者 订阅者 执行 概要 Git存储库链接 参考文献 介绍 发布/订阅模式是解耦软件的常见要求。有各种可用的技术和协议。在本文中,我将向您展示如何使用MQTT协议在.NET Core应用程序中实现。 什么是MQTT MQTT是一种消息协议,具有“较小的代码占用空间和在线占用空间”。MQTT是基于发布——订阅的消息传递协议,它建立在TCP/IP之上。 与具有请求/响应范例的HTTP相

寒冰屋的专栏 1489

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

微信小程序MQTT客户端

【代码】微信小程序MQTT客户端。

clg123的专栏 215

.net core集成MQTT服务端

程序作为MQTT的服务端,也是WebApi 接口地址,在Web页面中MQTTJS用的是Websocker协议,在Winfrom中用MQTT协议。导致程序需要启动两个端口。引用包:MQTTnet,MQTTnet.AspNetCore,这包最新的5.*,我引用的是4.3.7.1207。5.*的包在接收消息的处理方式略微不同。AppInfo.GetOptions() 这是获取配置文件。在Program 添加mqtt 服务。这是拓展的方法,添加mqtt服务。

世界太浮夸 1413

C# winForm 获取MQTT数据

C# winForm 获取MQTT数据

guotao1981111的博客 775

MQTT转Websocket服务器,并通过客户端接收【WebGl端】

【代码】MQTT转Websocket服务器,并通过客户端接收【WebGl端】

zjp223的博客 782
上一篇: NPOI得简单使用
下一篇: 关于物联网总结
Little_Code
博客等级 码龄10年 62粉丝 77原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值