最近做物联网,客户的设备使用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;

本文介绍了在.NETCore中使用MQTT协议时遇到的问题,如无法发布主题,以及如何切换到HslCommunication库来解决。此外,还分享了在多线程环境下处理设备数据时遇到的并发访问集合导致的程序崩溃问题,通过使用Lock解决线程安全。提供了相关代码示例。
最低0.47元/天 解锁文章
3179





