完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用ESP8266和TCP服务器通信,每隔一分钟会向服务器上报信息。但会遇到发送失败,连接状态卡在ESPCONN_WRITE。求大佬们帮忙分析一下。
日志1: 23:47:59 [2650550][DEBUG][NET]server_conn.state:ESPCONN_CONNECT(3) 23:47:59 [2651050][DEBUG][NET]tcp send: 23:48:04 [2655570][DEBUG][NET]server_conn.state:ESPCONN_WRITE(4) 23:48:09 [2660590][DEBUG][NET]server_conn.state:ESPCONN_WRITE(4) 23:48:14 [2665610][DEBUG][NET]server_conn.state:ESPCONN_WRITE(4) 23:48:19 [2670630][DEBUG][NET]server_conn.state:ESPCONN_WRITE(4) 23:48:24 [2675650][DEBUG][NET]server_conn.state:ESPCONN_WRITE(4) 23:48:25 [2677220][ERR][NET]connect err:-9! /* Connection reset. */ 23:48:29 [2680670][DEBUG][NET]server_conn.state:ESPCONN_WAIT(1) 23:48:31 [2683360][ERR][NET]connect err:-11! /* Not connected. */ 23:48:34 [2685690][DEBUG][NET]server_conn.state:ESPCONN_WAIT(1) 23:48:38 [2689760][ERR][NET]connect err:-11! 23:48:39 [2690710][DEBUG][NET]server_conn.state:ESPCONN_WAIT(1) [2695240][INFO][NET]tcp connect success! 23:48:44 [2695730][DEBUG][NET]server_conn.state:ESPCONN_WRITE(4) 23:48:44 [2695950][DEBUG][NET][link79]tcp send success! [2695950][DEBUG][NET]tcp recv(15) [2695950][DEBUG][NET]data conn recv: [2695950][INFO][PROTOCOL]get msg 23:48:49 [2700750][DEBUG][NET]server_conn.state:ESPCONN_CONNECT(3) 在一次发送中,持续了25秒,最终失败。最后触发重连回调 用的是NONOS SDK。但我翻过OSSDK的release note,没看到有关于修复这类网络问题的更新,所以应该是SDK版本关系不大。 请大佬帮忙看看。谢谢。 |
|
相关推荐
1个回答
|
|
根据您提供的日志信息,您的ESP8266在与TCP服务器通信时,发送数据时卡在了ESPCONN_WRITE状态。这种情况可能是由多种原因导致的,以下是一些建议和可能的原因分析:
1. 网络延迟或不稳定:在与TCP服务器通信时,网络延迟或不稳定可能导致数据发送失败。请检查您的网络环境,确保网络连接稳定。 2. 数据包大小:ESP8266的TCP发送缓冲区有限,如果发送的数据包过大,可能会导致发送失败。请尝试减小发送的数据包大小,或者分批次发送数据。 3. TCP连接超时:TCP连接可能因为长时间没有数据传输而超时。请检查您的TCP服务器设置,确保连接超时时间足够长,以适应您的数据发送频率。 4. 服务器端问题:服务器端可能存在一些问题,导致无法正确接收或处理发送的数据。请检查服务器端的日志和配置,确保服务器端能够正常接收和处理数据。 5. ESP8266固件问题:您的ESP8266固件可能存在一些问题,导致发送数据时卡在ESPCONN_WRITE状态。请尝试升级到最新版本的固件,或者使用其他已知稳定的固件版本。 6. 代码逻辑问题:请检查您的代码逻辑,确保在发送数据之前,TCP连接已经建立并且处于连接状态。同时,确保在发送数据后,正确处理发送结果和异常情况。 7. 系统资源不足:ESP8266的系统资源有限,如果同时运行多个任务或处理大量数据,可能会导致系统资源不足,从而影响数据发送。请检查您的代码,确保合理分配系统资源。 8. 重传机制:TCP协议具有重传机制,如果发送的数据没有被服务器正确接收,ESP8266会自动重传数据。请检查您的代码,确保在重传机制生效时,能够正确处理重传数据。 综上所述,要解决这个问题,您需要从多个方面进行排查和优化。首先,检查网络环境和TCP服务器设置;其次,优化数据包大小和发送频率;然后,检查ESP8266固件和代码逻辑;最后,确保系统资源合理分配和正确处理重传机制。希望这些建议能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
988 浏览 1 评论
553浏览 6评论
463浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
447浏览 5评论
448浏览 4评论
421浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 18:31 , Processed in 0.825203 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号