完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在我使用noossdk进行开发,主要实现TCP连接发送数据的功能,可能是网络的原因,现在使用的路由器有时候会断开连接,wifi会重连。TCP连接在这种情况下,就会进入了reconnect callback,我在rconnect callback里面开启一个任务,进行断开连接操作,但是返回ESPCONN_CONN -11
|
|
相关推荐
1个回答
|
|
在这种情况下,您可以尝试以下方法来解决 espconn_disconnect() 无法断开连接的问题:
1. 确保在调用 espconn_disconnect() 之前,已经正确初始化了 espconn 结构体。例如: ```c espconn_msg *plink = (espconn_msg *)zalloc(sizeof(espconn_msg)); plink->pcommon.pcb = pcb; plink->pcommon.type = ESPCONN_TCP; plink->pcommon.state = ESPCONN_NONE; ``` 2. 在调用 espconn_disconnect() 之前,确保连接已经建立。您可以检查 espconn 结构体的 state 字段,确保它不是 ESPCONN_NONE。 3. 在 reconn callback 函数中,确保您已经正确地调用了 espconn_disconnect()。例如: ```c void ICACHE_FLASH_ATTR espconn_reconnectcb(void *arg, sint8 err) { espconn_msg *plink = (espconn_msg *)arg; if (plink != NULL) { espconn_disconnect(plink); } } ``` 4. 如果 espconn_disconnect() 仍然返回错误代码 -11,您可以尝试在调用 espconn_disconnect() 之前,使用 espconn_abort() 函数来强制断开连接。例如: ```c void ICACHE_FLASH_ATTR espconn_reconnectcb(void *arg, sint8 err) { espconn_msg *plink = (espconn_msg *)arg; if (plink != NULL) { espconn_abort(plink); } } ``` 5. 如果问题仍然存在,您可以尝试在 reconn callback 函数中添加一些延时,以确保连接有足够的时间来处理断开操作。例如: ```c void ICACHE_FLASH_ATTR espconn_reconnectcb(void *arg, sint8 err) { espconn_msg *plink = (espconn_msg *)arg; if (plink != NULL) { os_delay_us(100000); // 延时 100 毫秒 espconn_abort(plink); } } ``` 6. 最后,确保您的路由器和 Wi-Fi 模块之间的连接稳定。如果可能的话,尝试更换路由器或使用更稳定的 Wi-Fi 模块。 希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
407浏览 6评论
339浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
321浏览 5评论
322浏览 4评论
310浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 14:23 , Processed in 3.083732 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号