打印

lwip丢包的一些问题

[复制链接]
8417|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzjgod|  楼主 | 2012-9-12 08:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做串口转以太网的东西,用lwip,结果发现了不少丢包的问题。首先是在封包的时候,我把1460个数据打一包发送出去,调用tcp_write,tcp_output,结果经常在几个固定位置丢1个数据,我以为是发送失败,判断这两个函数的返回值,如果不是ERR_OK就重发,结果还是相同的现象,而且这个丢包的位置和我封包的大小没有明显关系。
然后我把数据包变小,我设置成700个发送一次,这次在中间没有单独丢一个数的现象了,结果发现在我从串口大量的不间断发送数据的时候,会出现整包丢失的现象,而且在这之后再次发送数据,会将前次要发送的数据顶出来,中间没有丢失以前的东西,感觉就像队列里的东西没丢,但是没有往外发送,需要等待通知其发送出去一样。
二姨家的各位有没有懂以太网的大神,或者以前碰过相似问题的,好几天了,找不到问题在哪啊,哎!!

相关帖子

沙发
wangjunjun2005| | 2012-10-24 11:54 | 只看该作者
问题解决了没有?

使用特权

评论回复
板凳
yzjgod|  楼主 | 2012-10-25 10:52 | 只看该作者
这个问题不是lwip的问题,是串口的数据丢了。至于其他的一些超时什么的错误,基本上都是我的芯片RAM不够用,或者是lwipopts.h里的配置出现了问题。

使用特权

评论回复
地板
chayishuang| | 2013-5-16 09:55 | 只看该作者
请问楼主,我在调用tcp_write,tcp_output后telnet上收不到数据。我的函数是这样的,我知道简单的调用肯定是有问题的,但是不知道怎么搞,麻烦指教!
do{
    res_FIFO=QueueOut(&MyQueue1,&tcp_dat1);               
    j+=sprintf(uart_dat+j,"%s",&tcp_dat1);
    if(res_FIFO==QueueEmpty)
    {
    tcp_write(pcb,uart_dat,strlen(uart_dat), 1);
    tcp_output(pcb);                                                                               
    }
}while(res_FIFO==QueueOperateOk);       

使用特权

评论回复
5
清幽99| | 2014-4-16 22:29 | 只看该作者
你好,我看见你以前发的帖子关于lwip发送丢包问题,我也遇到了,请问你是怎么解决的,请您赐教,小弟感激不尽,

使用特权

评论回复
6
清幽99| | 2014-4-17 23:24 | 只看该作者
求指教

使用特权

评论回复
7
yzjgod|  楼主 | 2014-4-21 10:54 | 只看该作者
清幽99 发表于 2014-4-16 22:29
你好,我看见你以前发的帖子关于lwip发送丢包问题,我也遇到了,请问你是怎么解决的,请您赐教,小弟感激不 ...

丢包你也得分情况,有可能是自己组包的时候,数据就已经丢了。
还有就是你得判断tcp_write的返回值,有可能内存满了。
其他的情况我还没遇到

使用特权

评论回复
8
maomao07331| | 2014-6-22 11:28 | 只看该作者
你好,我的情况是 发送时候没有丢失的现象,只是在这之后再次发送数据,会将前次要发送的数据顶出来,就是比如发8M数据,收到的就没有8M,少一包或者两包,但是在此发的时候,之前的一/两包数据就会被顶出来,实在不知道怎么办啊 ?
而且发送速度很慢?

使用特权

评论回复
9
maomao07331| | 2014-6-22 11:29 | 只看该作者
请多多指教啊!

使用特权

评论回复
10
yushan210| | 2016-4-29 17:02 | 只看该作者
我是接受数据时丢包

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

370

帖子

2

粉丝