完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我用esp8266作为client向http server发送post请求,发送10几分钟之后,espconn_send就会返回ESPCONN_MEM错误,上一包数据发送完成,进入sent callback之后我再发下一条post请求.我怀疑是连接的tcp_PCB没有释放掉,可是我不知道该如何释放,我在disconnect callback中espconn_delete或espconn_disconnect都不行,请问有没有好的解决办法
void ICACHE_FLASH_ATTR disconnect_callback(void *arg) { struct espconn *conn = (struct espconn *)arg; sint8 error = espconn_delete(conn); //sint8 error = espconn_disconnect(conn); if(conn->proto.tcp != NULL) { os_free(conn->proto.tcp); conn->proto.tcp = NULL; } os_free(conn); user_conn = NULL; if(error != 0){ char str[30]; os_sprintf(str, " delete err: %d", error); uart0_sendStr(str); } } |
|
相关推荐
1个回答
|
|
|
ESP8266在发送HTTP POST请求时遇到ESPCONN_MEM错误,通常是由于内存不足导致的。以下是一些建议来解决这个问题:
1. 检查代码中是否有内存泄漏。确保在使用完动态分配的内存后,使用`free()`函数释放内存。 2. 优化数据结构和算法,减少内存使用。例如,使用更小的数据结构或更高效的算法。 3. 在`disconnect_callback`函数中,确保正确地释放连接资源。你可以尝试以下代码: ```c void ICACHE_FLASH_ATTR disconnect_callback(void *arg) { struct espconn *conn = (struct espconn *)arg; // 释放连接资源 espconn_disconnect(conn); espconn_delete(conn); // 释放与连接相关的其他资源(如果有) // ... } ``` 4. 如果问题仍然存在,可以尝试使用更简单的HTTP客户端库,如[ESP8266 HTTP Client](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266HTTPClient),它可能更有效地管理内存。 5. 如果你仍然遇到ESPCONN_MEM错误,可以尝试升级ESP8266固件到最新版本,以获取可能的内存管理和性能改进。 6. 最后,如果以上方法都无法解决问题,你可以考虑使用具有更大内存的ESP32或其他具有更高性能的微控制器。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
933 浏览 0 评论
1653 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1284 浏览 1 评论
1218 浏览 1 评论
4959 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1249浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2329浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2524浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1051浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:55 , Processed in 0.746721 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
478
