使用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
被浏览
355
2 个回答
ZYQ
ZYQ 2022-04-25
往前看,不回头!!!

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

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

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

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

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览