当前位置: 技术问答>linux和unix
UDP单向传输的问题
来源: 互联网 发布时间:2017-05-27
本文导语: 最近做一个UDP 局域网内单向传输的程序,就是没有连接,没有验证,也不能重传,但还要保证数据不能丢失,效率够高 现在能做到的水平是,持续发送2G的文件能跑20个小时不丢包,速度大概是5M/s,2G 的文件7分钟传...
最近做一个UDP 局域网内单向传输的程序,就是没有连接,没有验证,也不能重传,但还要保证数据不能丢失,效率够高
现在能做到的水平是,持续发送2G的文件能跑20个小时不丢包,速度大概是5M/s,2G 的文件7分钟传输完毕。
再大的文件我没有测试过,
另外关于丢包我感觉主要还是接收端写文件的时候偶尔会发生阻塞,造成接收端缓冲区满,我用的fwrite,
1.我想知道我做到这样算什么水平?经理明显是不满意的。。。囧
2.大家在接收数据的时候有什么好的策略?(比如说我原来用的write,后来用fwrite性能就好了一些,但还是会丢包)
现在能做到的水平是,持续发送2G的文件能跑20个小时不丢包,速度大概是5M/s,2G 的文件7分钟传输完毕。
再大的文件我没有测试过,
另外关于丢包我感觉主要还是接收端写文件的时候偶尔会发生阻塞,造成接收端缓冲区满,我用的fwrite,
1.我想知道我做到这样算什么水平?经理明显是不满意的。。。囧
2.大家在接收数据的时候有什么好的策略?(比如说我原来用的write,后来用fwrite性能就好了一些,但还是会丢包)
|
单位是B还是b?我试过局域网UDP传20Mbits/s没问题,当然局域网里没有其他任何数据干扰
|
UDP协议由于没有TCP类似的慢起动这样类似的处理机制,在不使用应用层协议回馈处理的情况下是无法做到不丢数据的,除非你发送数据永远占不满带宽。自己做简单的应用协议ack下吧,不然应该是没法子。在高带宽情况下,UDP的最大传输速率一般还赶不上TCP,当然高手自定协议除外
|
楼主,你UDP单向传输怎么做到不丢数据的,太牛了吧,局域网中的测试是不能代表实际使用情况的,建议模拟带宽不足或者不稳定的情况再测。