OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 887|回复: 9

tcp_client发数据的时候老掉线

[复制链接]

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
发表于 2024-10-9 17:26:39 | 显示全部楼层 |阅读模式
1金钱
掉线后还不能自动重连

最佳答案

查看完整内容[请看2#楼]

找到原因了lwipopts.h中关于pbuf内存池大小的宏PBUF_POOL_BUFSIZE之前为512,而我一包数据是1440,虽然我不知道这个宏是干嘛的但是我把它设置为1500稳定性就提高了,测试了5个小时出现了一次无法发送数据的情况但没掉线,强制重连一下后就好了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
 楼主| 发表于 2024-10-9 17:26:40 | 显示全部楼层
找到原因了lwipopts.h中关于pbuf内存池大小的宏PBUF_POOL_BUFSIZE之前为512,而我一包数据是1440,虽然我不知道这个宏是干嘛的但是我把它设置为1500稳定性就提高了,测试了5个小时出现了一次无法发送数据的情况但没掉线,强制重连一下后就好了。
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
 楼主| 发表于 2024-10-9 18:58:03 | 显示全部楼层
发送数据量小还没事,数据量大了就掉线并且无法检测到掉线。
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
 楼主| 发表于 2024-10-12 11:43:44 | 显示全部楼层
现在更惨,发送数据一段时间后就掉线,能检测到掉线也能去重连就是连不上必须重启才行
回复

使用道具 举报

15

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2018-7-27
在线时间
85 小时
发表于 2025-1-22 11:38:58 | 显示全部楼层
qinlu123 发表于 2024-10-12 11:43
现在更惨,发送数据一段时间后就掉线,能检测到掉线也能去重连就是连不上必须重启才行

解决了吗
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
 楼主| 发表于 2025-2-6 13:44:56 | 显示全部楼层
本帖最后由 qinlu123 于 2025-2-6 14:15 编辑

解决了,把内存池改大一些然后发送频率降一些。还有就是数据打包和数据发送放在同一个线程里,我之前是在中断里采集并打包数据(90组数据为一包也就是需要进90次中断),打包完成后置位标志位在大循环里检测标志位并发送,这样操作开着仿真没事但是一关仿真就会发送失败并触发重连然后就死在LWIP底层一个地方了,后来我把打包和发送都放在中断里了就好了。
回复

使用道具 举报

15

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2018-7-27
在线时间
85 小时
发表于 2025-2-6 14:49:55 | 显示全部楼层
qinlu123 发表于 2025-2-6 13:44
解决了,把内存池改大一些然后发送频率降一些。还有就是数据打包和数据发送放在同一个线程里,我之前是在 ...

你好请问一下,我现在传输大概5000个字节的整形数据,后面的1460 后把前面的覆盖,怎么回事
回复

使用道具 举报

15

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2018-7-27
在线时间
85 小时
发表于 2025-2-6 15:23:52 | 显示全部楼层
eng233 发表于 2025-2-6 14:49
你好请问一下,我现在传输大概5000个字节的整形数据,后面的1460 后把前面的覆盖,怎么回事

解决了,我数据包满了没合并
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
 楼主| 发表于 2025-2-6 15:29:25 | 显示全部楼层
eng233 发表于 2025-2-6 14:49
你好请问一下,我现在传输大概5000个字节的整形数据,后面的1460 后把前面的覆盖,怎么回事

这个我也不知道,LWP的配置一般在lwipopts.h里改改里边的配置试试
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
547
金钱
547
注册时间
2018-11-2
在线时间
113 小时
 楼主| 发表于 2025-2-6 15:40:31 | 显示全部楼层
eng233 发表于 2025-2-6 14:49
你好请问一下,我现在传输大概5000个字节的整形数据,后面的1460 后把前面的覆盖,怎么回事

你分分包试试,一包数据不要超过1440https://www.cnblogs.com/bugutian/p/13025264.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-6 12:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表