完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
MQTT在访问时一段时间会出现“ read 0:1, break ”会断开连接一次,重连可正常发送一段 msh />onenet_upload_cycle |
|
相关推荐
3个回答
|
|
补充遇到问题的代码段,MQTT的部分代码:
static int net_read(MQTTClient *c, unsigned char *buf, int len, int timeout) { int bytes = 0; int rc; while (bytes < len) { #ifdef MQTT_USING_TLS if (c->tls_session) { rc = mbedtls_client_read(c->tls_session, &buf[bytes], (size_t)(len - bytes)); if (rc <= 0) { bytes = -1; break; } else { bytes += rc; } goto _continue; } #endif rc = recv(c->sock, &buf[bytes], (size_t)(len - bytes), MSG_DONTWAIT); if (rc == -1) { if (errno != ENOTCONN && errno != ECONNRESET) { bytes = -1; break; } } else bytes += rc; #ifdef MQTT_USING_TLS _continue: #endif if (bytes >= len) { break; } if (timeout > 0) { fd_set readset; struct timeval interval; LOG_D("net_read %d:%d, timeout:%d", bytes, len, timeout); timeout = 0; interval.tv_sec = 1; interval.tv_usec = 0; FD_ZERO(&readset); FD_SET(c->sock, &readset); select(c->sock + 1, &readset, RT_NULL, RT_NULL, &interval); } else { LOG_D("net_read %d:%d, break!", bytes, len); break; } } return bytes; } 后面这里的 的timeout=0会不会是问题啊 static int MQTTPacket_readPacket(MQTTClient *c) { int rc = PAHO_FAILURE; MQTTHeader header = {0}; int len = 0; int rem_len = 0; /* 1. read the header byte. This has the packet type in it */ if (net_read(c, c->readbuf, 1, 0) != 1) goto exit; |
|
|
|
可能是你有多台有相同客户端ID的设备和MQTT和服务端连接了,你断开,只剩一台开还会不会
|
|
|
|
查看下发布和订阅后的Topic是否有问题,以及上线回调都做了什么。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
655 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2448 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1292 浏览 0 评论
1895 浏览 0 评论
1486 浏览 0 评论
74860 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 15:45 , Processed in 2.724121 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号