精易论坛

标题: MQTT模块 [打印本页]

作者: qq3147106    时间: 2024-5-17 11:35
标题: MQTT模块
一直找不下个完整的,好用的MQTT模块,自己参考3.1.1的协议写了一个
协议文档:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html

用的etcp5.0模块处理TCP,鱼刺类.多线程6模块处理数据之间同步

TCP里面有个回调函数没法写在类下面传进去,类下面都是方法 不是子程序,所以TCP数据收到后的处理放在类外面,导致一些变量也放成全局变量了
一个程序里面声明两个类一起用的话 估计会出现问题,后续继续完善吧

源码暂时不放了  写了好几天  想留的参加下开源大赛,有需要的也可以私信我QQ:3147106

易语言MQTT模块.rar (171.59 KB, 下载次数: 106)


补充内容 (2024-5-20 08:47):
看见说是没开源大赛了,  那源码直接附上吧,欢迎论坛的各位大神帮忙完善
下载链接:https://wwi.lanzoup.com/iSJek1z8iumf

补充内容 (2024-6-3 10:45):
发布了个问答贴,大神给解决; 回调问题,把回调函数和所有全局变量放入类下面了
下载连接:https://wwi.lanzoup.com/iYIwd20onszi

补充内容 (2024-7-17 10:29):
更新了一个版本,不想上传其他网盘了,补充又没法提交文件,直接把源码和模块的压缩包放25楼了,

补充内容 (2024-7-17 10:30):
发现MQTT连接过程中,再次发起连接会异常奔溃,调试发现,新发起连接,先连接成功,然后服务器把旧的连接踢掉了,触发TCP断开事件

补充内容 (2024-7-17 10:31):
先连接成功,句柄记录了新的连接,断开连接事件我给清空了句柄,导致再发数据旧奔溃了,在断开连接里面增加判单是当前连接,才清空句柄

补充内容 (2024-7-17 10:33):
同时在连接中增加,先判断是否存句柄,存在的话断开连接,要不MQTT连接上后,改个客户DuanID还可以连接,旧的连接也不会断开,但是句柄已经丢失了
作者: 落花落叶    时间: 2024-5-17 11:57
感谢楼主分享!
作者: onda    时间: 2024-5-17 12:07
感谢分享
作者: cs潇潇    时间: 2024-5-17 12:29
前排支持,坐等完善
作者: 杨明煜    时间: 2024-5-17 15:10
感谢分享.............
作者: ljx111    时间: 2024-5-17 16:44
感谢分享~~~~~~~~~~~~~
作者: 艾玛克138    时间: 2024-5-17 18:25
加油!努力学习!
作者: 小虎来了    时间: 2024-5-20 08:08
感谢分享,很给力!~
作者: kingchain    时间: 2024-5-22 09:00
感谢分享,很给力!~
作者: jihh    时间: 2024-5-27 16:17
断开连接可以删掉,在客户Duan主动发送 e0 00 报文后,服务器会主动断开TCPIP的连接,所以在操作断开的话程序会退出。删掉后在断开程序就不会退出了。

问题 问题 问题 问题 问题 问题↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

因为使用了很多的全局变量,在每次做MQTT连接的时候程序的内存使用就会增加,如何在断开连接的时候精确的释放这部分的内存呢?????????????

0823c0fb17d86a80fc97ed140e58f4c.png (58.37 KB, 下载次数: 1)

0823c0fb17d86a80fc97ed140e58f4c.png

报文.jpg (210.32 KB, 下载次数: 1)

我测试的报文

我测试的报文

作者: zhaode2888    时间: 2024-5-29 09:51
感谢分享
作者: 吹吹就不疼了    时间: 2024-5-30 11:40

感谢分享
作者: qq3147106    时间: 2024-5-30 17:06
jihh 发表于 2024-5-27 16:17
断开连接可以删掉,在客户Duan主动发送 e0 00 报文后,服务器会主动断开TCPIP的连接,所以在操作断开的话程 ...

里面有TCP的回调函数,这个回调函数没法放在类下面 类下面没法创建程序 回调函数只能放在外面,导致变量只能全局变量了
作者: qq3147106    时间: 2024-5-30 17:15
jihh 发表于 2024-5-27 16:17
断开连接可以删掉,在客户Duan主动发送 e0 00 报文后,服务器会主动断开TCPIP的连接,所以在操作断开的话程 ...

目前有个想法是,把用到的全局变量放到一个自定义数据类型里面,然后定义这个类型的一个数组,成员数是0,类初始化里面新增成员,销毁里面删除成员
作者: abnerll    时间: 2024-5-31 18:04
感谢分享
作者: 壮志豪情    时间: 2024-6-2 18:36
建议加上掉线检测 自动重连
作者: qq3147106    时间: 2024-6-3 08:45
壮志豪情 发表于 2024-6-2 18:36
建议加上掉线检测 自动重连

我这只是模块,可以加个TCP断开回调,然后用利用断开回调和发送心跳结果来维护,模块里面顶多能处理TCP断开,异常断开没收到TCP断开消息的话,只能通过心跳,模块也没法定时发送心跳吧
作者: 窝窝头19    时间: 2024-6-11 16:35
这个一旦网络波动断开连接后程序会崩溃,无法重连
作者: pq9999    时间: 2024-6-12 06:58
谢谢分享
作者: yangchangli    时间: 2024-6-13 10:34
好东西,感谢分享
作者: hjinpwhe1    时间: 2024-6-13 14:46
好东西,感谢分享
作者: 小虎来了    时间: 2024-6-27 09:34
感谢分享
作者: mqmrx    时间: 2024-6-30 19:19
学习力,......
作者: mqmrx    时间: 2024-6-30 19:21
学习力,......
作者: qq3147106    时间: 2024-7-17 10:27
发现个BUG,更新下

易语言MQTT模块.rar

1.23 MB, 下载次数: 93, 下载积分: 精币 -2 枚


作者: 大表嫂    时间: 2024-7-22 11:15
qq3147106 发表于 2024-7-17 10:27
发现个BUG,更新下

感谢UP分享~~~~~~~~~~
作者: gqohui455    时间: 2024-7-26 17:57
学习力,......
作者: yangchangqi789    时间: 2024-8-8 12:08
好东西,感谢分享
作者: AliGod    时间: 2024-8-8 12:13
感谢分享,很给力!~
作者: zkwt0012    时间: 2024-9-14 15:55
我来看看
作者: csc123    时间: 2024-11-15 16:37
编译出来之后,就没用了,只能调试的时候用,回调不起作用
作者: qq3147106    时间: 2024-11-18 08:29
csc123 发表于 2024-11-15 16:37
编译出来之后,就没用了,只能调试的时候用,回调不起作用

不对啊 只有那个测试窗口是调试才会出来啊
作者: csc123    时间: 2024-11-18 11:59
这我不清楚,反正就是编译成exe之后,回调不起作用,收不到任何消息,简单的说,就是开发的时候能用,不能生成exe用
作者: qq3147106    时间: 2024-11-18 16:04
csc123 发表于 2024-11-18 11:59
这我不清楚,反正就是编译成exe之后,回调不起作用,收不到任何消息,简单的说,就是开发的时候能用,不能生成exe ...

那一可以看下传入回调参数那里你是不是用的调试输出,调试输出编译的时候会屏蔽掉
作者: csc123    时间: 2024-11-19 16:10
qq3147106 发表于 2024-11-18 16:04
那一可以看下传入回调参数那里你是不是用的调试输出,调试输出编译的时候会屏蔽掉 ...

好吧,难怪,初始化是没写在调试输出里面的,但是发布还是订阅用了调试输出,因为有返回值的....醉了,自己给自己挖了个坑
完全正常了,感谢大佬的分享
作者: lt12345678    时间: 2024-11-26 00:35
好东西,感谢分享
作者: lhn0925    时间: 2024-12-19 07:37
学习一下
作者: jgl118    时间: 2024-12-19 16:07
这个很不错
作者: lhn0925    时间: 2024-12-28 15:22
学习一下
作者: fkuk1228    时间: 2025-2-8 11:58
感谢分享
作者: 515667395    时间: 2025-2-12 21:45
关注下,搞完了吗
作者: michoal    时间: 2025-4-27 22:10
感谢分享,很给力!~
作者: tszc50    时间: 2025-5-23 12:18
一直找不下个完整的
作者: tszc50    时间: 2025-5-23 12:18
感谢大佬的分享
作者: ogion    时间: 5 天前
支持一下




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4