修改部分代码以解决基于ESP8266的可编程控制器的TCP“粘包”问题
💡
原文英文,约400词,阅读约需2分钟。
📝
内容提要
在调试ESP8266控制器时,遇到TCP粘包问题。由于TCP是流式传输,可能导致数据接收错误。解决方法包括固定长度、使用分隔符或自定义帧格式。最终通过lwip栈的pbuf缓冲区暂存数据,未以\r\n\r\n结尾且未超限时不调用tcp_recved,问题解决。
🎯
关键要点
- 在调试ESP8266控制器时,遇到TCP粘包问题。
- TCP是流式传输,可能导致数据接收错误。
- 解决TCP粘包和拆包问题的方法包括:固定长度、使用分隔符、或自定义帧格式。
- HTTP协议以 字符结束,可以通过使用分隔符解决问题。
- ESP8266内存有限,无法存储解包数据。
- 最终使用lwip栈的pbuf缓冲区暂存数据,未接收到完整数据时不调用tcp_recved函数。
- 修改PC工具,使用定时器自动下载网页,测试后未发现下载中断问题。
➡️