当前位置: 技术问答>linux和unix
关于UDP发送速率
来源: 互联网 发布时间:2016-08-13
本文导语: 遇到一个很奇怪的问题,关于UDP发送速率 我想做一下网速的测试,要求必须用UDP。于是就 while(1) { //不停 的write道socket } 结果令人大吃一惊。发送速率达到了70多MB/S这意味这已经远远超过我百兆网卡的12.5的速率...
遇到一个很奇怪的问题,关于UDP发送速率
我想做一下网速的测试,要求必须用UDP。于是就
while(1)
{
//不停 的write道socket
}
结果令人大吃一惊。发送速率达到了70多MB/S这意味这已经远远超过我百兆网卡的12.5的速率。而接收端显示的接受速率达到了30多MB/S。同样是超过网卡速率。(测试在同一台电脑上做的)。
所以很郁闷,最终目的是要做发送最大速率且不丢包的这种情况。不知大侠们有何看法啊?
难道这70多M的速率只是内核产生报文的速率?wtite不等待网卡发送数据出去才返回?
我想做一下网速的测试,要求必须用UDP。于是就
while(1)
{
//不停 的write道socket
}
结果令人大吃一惊。发送速率达到了70多MB/S这意味这已经远远超过我百兆网卡的12.5的速率。而接收端显示的接受速率达到了30多MB/S。同样是超过网卡速率。(测试在同一台电脑上做的)。
所以很郁闷,最终目的是要做发送最大速率且不丢包的这种情况。不知大侠们有何看法啊?
难道这70多M的速率只是内核产生报文的速率?wtite不等待网卡发送数据出去才返回?
|
可以参考下TCP的流量控制。。
|
同一台电脑不会通过硬件口,你实际上测的是环回口localhost
|
write正常情况要么写入了返回,
或者是失败返回。
发送UDP的话,你可以试试 sendto(), recvfrom()
不知道你写socket代码是怎么写的。
或者是失败返回。
发送UDP的话,你可以试试 sendto(), recvfrom()
不知道你写socket代码是怎么写的。
|
同一台电脑?这样发送的数据不会经过网卡吧。。。
|
同一台电脑测试什么都可能发生。。。