淘先锋技术网

首页 1 2 3 4 5 6 7

iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过iperf的“-u”参数即可测试UDP应用的传输性能,下图测试的是在iperf客户端传输100MB的UDP数据包的输出结果:

bf16298db1324247e7bd21d95aec7dc5.png

iperf传输100MB的UDP数据包的输出结果

这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在iperf服务端查看,因为在客户端执行传输测试的同时,服务端也会同时显示传输状态,如下图所示。

28d28fb1b5bdfdc8a513bfe45dd2ebb6.png

iperf服务端显示的UDP传输状态

在这个输出中,详细记录了在传输过程中,每个阶段的传输延时和丢包率,在UDP应用中随着传输数据的增大,丢包率和延时也随之增加。对于延时和丢包可以通过改变应用程序来缓解或修复,例如视频流应用,可以通过缓存数据的方式而可以容忍更大的延时。

我用amd测udp发包vps丢包率非常乌龙寺论坛

iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过iperf的“-u”参数即可测试UDP应用的传输性能,下图测试的是在iperf客户端传输100MB的UDP数据包的输出结果:

linux 下udp收发包的并发数上限是多少

UDP本来就是无连接无状态,不管是否发送成功的,网络状况越好自然越容易成功,10万级别的数据包,丢包严重是很正常的啊,要是很大量数据的话,就做UDP打洞呗,减少服务器压力呗

UDP发包大小及效率问题

主程序监听UDP端口的请求,收到后做一些验证工作,然后创建新线程传递数据,数据传递结束,或者网络超时等等条件下,线程结束,这样每个客户端都对应一个服务器的线程来提供服务,如果网络没有问题的话,服务质量可以保证,但服务器这边的负担就比较大;

还可以选择创建一个线程池,设定一个最大的服务器端负载,比如同时最大支持10个线程,也就是10个客户端,每次主程序验证完请求后,去线程池里申请线程资源,如果当前所有的线程都在工作,那么直接返回客户端,请求失败,这样负载可调,也不会出现请求过多,服务质量下降的情况更多

若多个客户端同时请求了同一个视频源,每个线程去响应的话,会不同步的。我的视频源是从CCD上直接取的。

服务器的负担确实是个问题。若上百个客户端请求的话,就得上百个线程,上百个port。不一定能支撑的了。

你这个不是点播么,如果是直播的话,那就是同步的,点播的话很难同步吧,而且如前面网友所说,点播一对一最好用tcp协议,直播,比如视频会议,用udp比较好

还有没必要每个线程一个端口,主程序监听一个端口就够了,而子线程负责数据发送,接收方也许会受到很多同一服务器发来的数据,把那些不是当前客户端点播的视频内容过滤掉就好了

UDP的话,现在遇到的问题就是,客户端那边老是卡一下,然后再动,卡,动。。。

这样子可不好用。有什么好的解决办法吗?

那是不是你没有设置足够的缓存,一般视频播放,尤其你用UDP,丢包的情况下,需要设置一段缓冲区,比如2s的视频播放预留,可以根据你视频文件的质量设置具体的内存大小,在播放开始的时候持续获取数据,直到大小满足预设条件,再开始播放,中间持续监控缓冲数据,一旦没有数据则提示用户,在获得数据量再次满足条件时,再播放;

主流的播放器应该都是这么做的,就是前面插播广告的时候,后台就在缓冲数据了

UDP包发不出去

服务器和你是不是在同一网段?

从网络角度上来说,向服务器发包软件一般会应用服务器的IP,而网络实际建立链路是在数据链路层,也就是说你的主机实际上是向服务器的MAC发包。

服务器的MAC是需要ARP来解析的,如果服务器断电,那么主机不会收到服务器的ARP应答,也就无法获得服务器MAC。这样表面上看主机不知道将包发往何处,但从OSI角度分析,主机根本无法完成数据链路层封装,不能将封装递交给物理层,也就是说根本不能从主机出去。(无法完成封装UDP)

但是如果服务器是在不同网段,并且数据需要从网关走,那么上述情况不适用。

Java的写的UDP发包,有什么办法可以扩大UDP的发送量?

网络的承受,本来就是有限的,这么大的一包、不分包,很容易出错。

你如果了解TCP/IP通讯的原理就清楚,其实TCP/IP包的大小是有限制的

如果分包 又要要求 不丢失,就要再分包是加入控制机制,每收一包就要验证吗???还有我在看别人的文件传输程序时并没有进行分包这是为什么??我做了个TCP测试程序,如果有一个包的返回值发送失败 要比 发送返回都正常的情况下,收到的字符总数要少几个字符。我是1024一包,发500次。不知道丢的字符是什么?