OpenEdv-开源电子网

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

UCOSii和LWIP出现网络卡死的现象

查看数: 7401 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-1-29 20:30

正文摘要:

本帖最后由 xiaoo125 于 2018-1-29 20:43 编辑 我用的是STM407,网络部分用的是原子大哥的代码,TCP服务器的历程修改;设备通过交换机和PC机连接,上位机软件每秒查询一次设备状态,设备也会回传一帧数据给上位机 ...

回复

正点原子 发表于 2018-1-31 01:14:40
xiaoo125 发表于 2018-1-30 17:25
今天已验证确实是客户端没有给出ack。因为使用的网络环境比较复杂,导致客户端认为自己没有收到,从而没有 ...

发送数据,没收到应答,就得重发。
而接收端,如果收到数据不符合预期,就得丢弃。
xiaoo125 发表于 2018-1-30 17:25:30
今天已验证确实是客户端没有给出ack。因为使用的网络环境比较复杂,导致客户端认为自己没有收到,从而没有给出ack。时间长了,底层服务器端的发送buf被写满。unack的链表也没有空的。最终发送的时候发不出去,假死在这里,我调试了一下中断啥都能响应,由于网络优先级高,所以其他任务根本就不执行。现在我需要实现如果长时间收不到ack就要扔掉这一包。该如何实现
huangning290 发表于 2018-1-30 16:06:56
因为在unacked里不为空,也就说明了,有包没有收到回应,因此未收到 ack 的链表一直不为空,所以一直在等待,win窗口一直减小我感觉是因为一直在接收或者发送数据,但是一直没有收到回应,因此能够接收数据的滑动窗口的大小就一直在减小,导致一定程度以后,无法接收数据,我感觉是这样,欢迎讨论!
huangning290 发表于 2018-1-30 16:04:05
这里仅仅讨论一下,首先是关于unacked的一直卡死在循环里的问题,因为TCP 有确认的连接,而且和win窗口有关的,就是那个滑动窗口,这个滑动窗口大小应该是不为1,否则就是顺序接收了。
正点原子 发表于 2018-1-30 00:41:59
帮顶



关闭

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

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

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

GMT+8, 2026-11-4 06:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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