使用 MQTT 的 demo 上传数据同时查询是否有下行命令一个多小时后出现 mqtt 停止

发布于 2022-04-25 20: 21: 28

[问题] :
我对 sdk 中的 mqtt_demo 进行修改后, 每隔 5 秒上传数据, 同时原 demo 中的订阅下行消息不变, 连续一个多小时传输后会出现 MQTT 连接停止.
[初步定位]
根据 log 定位到的位置为如下图所示的 bytes_rcvd = recv (. . . ) 这个部分, 正常连接是返回值一直为 2, 而连接的时间较长大约 1 个半小时后, 就会开始返回值为 0, 导致报错, 且 mqtt 连接失败了.
[补充一下] 因为我对 socket 连接啥的不是很懂, 虽然找到了函数, 但是不是很看得懂. 上回在社区看到 w801 说 wifi 好像没有消息会自动断开, 所以猜测是这个读取包的函数, 如果过长时间读不到数据会自动关闭 socket 链接吗?
2. png
3. png
4. jpg

查看更多

关注者
0
被浏览
2. 3k
2 个回答
ZYQ
ZYQ 2022-04-25
我已不再支持 W80X 任何相关问题的回复, 请大家不要私信, 有问题找 isme 谢谢

这个 recv 里面封装的就是 lwip_recv 不会自动关闭 socket 的

大信
大信 认证专家 2022-04-26
硬件开发, 软件开发, 系统开发, 工程架构, 方案设计

WIFI 通信信道受干扰, 或者距离太远, 都会使连接中断, 连接中断 socket 也就断了.

wifi 连接是不可靠连接, 你要在应用层, 加上心跳检测, 断线重连的机制, 才能保证业务通讯可用性.

撰写答案

请登录后再发布答案, 点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览