[技术讨论] 倒腾以太网又发现了奇怪的现象

[复制链接]
 楼主| qinlu123 发表于 2025-8-8 18:37 | 显示全部楼层 |阅读模式
我有两个项目(A和B)都用到了以太网,单片机端都是TCP服务端。A项目发送的数据量比较大,B数据量要小很多。两个项目都很相似,客户端接入后就开始周期性发数据。测试A项目时发现,在发数据的过程中拔掉网线然后再插上,数据能恢复传输。但是B项目做同样的操作无法恢复,只能让客户端重新连接一下才行。查找代码发现tcp_sndbuf()函数返回的发送缓冲区剩余大小不足以发送新数据所以就直接退出函数了,除非客户端重连否则再也进不来了。

奇怪的是,B代码就是基于A代码写的,以太网相关一个字都不差,只是二者打包的数据不一样(A每帧16个字节,打包到1440字节一块发;B每帧18字节打包1440字节一块发)。我甚至把A的代码中的数据打包替换成B的打包函数,数据生成速度也和B一样,但是A依然没问题。两个程序用的同一块板子测试,我真是服了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
地瓜patch 发表于 2025-8-10 01:21 | 显示全部楼层
这种问题,大概率是程序上的问题
 楼主| qinlu123 发表于 2025-8-11 08:42 | 显示全部楼层
解决了,有个每隔1ms进行累加一次的函数让我不小心删掉了,导致LWIP超时处理失效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

2106

帖子

14

粉丝
快速回复 在线客服 返回列表 返回顶部