7157|4

9794

帖子

24

TA的资源

版主

楼主
 

LWIP使用UDP连续发送丢数据的问题 [复制链接]

我使用LWIP UDP通过百兆以太网发数据,连续发送多包数据接收到的总比实际少,我猜测有时是udp_send函数执行一次后数据还没有发送就完成就再次执行了下一个udp_send,或者是放内存导致。但是我不知道应该通过什么方式来检测数据是否发送完成。请教这种情况应该怎么处理?

最新回复

1,上位机的实时性并不好。所以高速UDP通信会丢数据。 还有我不知道UDP——send后有没有办法查询发送缓冲区是否清空。 2,还有一个办法你可以试一下,就是你的单片机通过百兆连接一个千兆交换机,千兆交换机用千兆网线连接电脑的千兆网口试验一下。看看通讯速率能不能上来。   详情 回复 发表于 2021-10-24 09:52
点赞(1) 关注(1)
 
 

回复
举报

9794

帖子

24

TA的资源

版主

沙发
 

如果我的循环里只有udp_send_data函数,PC端收到数据的吞吐量为16Mbps左右

 

然后如果在每次执行完udp_send_data后延时100us,速度会提升一倍还多,达到37Mbps

 

  

如果使用延时的方法,100Mbps的网络不知道应该设置多少合适,不是一个理想的解决方案。

 

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

6822

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

数据包小点重发,发包后停顿吗,UDP 包是不能发太快的,不然肯定要丢包
如果是缓冲区已满,失败后等待

使用延时的方法可以试试,确实不是很理想的方法

 

 
 
 

回复

9794

帖子

24

TA的资源

版主

4
 

一直以为是下位机的问题,后来测试发现是上位机反应慢才丢的包,优化上位机程序,再把下位机发送时加点延时问题解决。

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

3218

帖子

0

TA的资源

五彩晶圆(中级)

5
 

1,上位机的实时性并不好。所以高速UDP通信会丢数据。 还有我不知道UDP——send后有没有办法查询发送缓冲区是否清空。

2,还有一个办法你可以试一下,就是你的单片机通过百兆连接一个千兆交换机,千兆交换机用千兆网线连接电脑的千兆网口试验一下。看看通讯速率能不能上来。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表