最近在做串口转以太网的东西,用lwip,结果发现了不少丢包的问题。首先是在封包的时候,我把1460个数据打一包发送出去,调用tcp_write,tcp_output,结果经常在几个固定位置丢1个数据,我以为是发送失败,判断这两个函数的返回值,如果不是ERR_OK就重发,结果还是相同的现象,而且这个丢包的位置和我封包的大小没有明显关系。
然后我把数据包变小,我设置成700个发送一次,这次在中间没有单独丢一个数的现象了,结果发现在我从串口大量的不间断发送数据的时候,会出现整包丢失的现象,而且在这之后再次发送数据,会将前次要发送的数据顶出来,中间没有丢失以前的东西,感觉就像队列里的东西没丢,但是没有往外发送,需要等待通知其发送出去一样。
二姨家的各位有没有懂以太网的大神,或者以前碰过相似问题的,好几天了,找不到问题在哪啊,哎!! |