测试吞吐量

DustLand 2010-10-21 04:12:04
我现在有两个通过无线网连接的机器A和B,我想测无线链路的吞吐量。在发送端的基本代码是
	GetLocalTime(&sendTime);
//发送count个包,包括count个延迟rate
for(int i=0;i<count;i++)
{
int n=sendto(sockClient,sendBuf,SizeOfPacket,0,(SOCKADDR*)&addrSrv,len);
Sleep(Rate);//延迟时间,用来控制速率
}
//结束时间
GetLocalTime(&finishTime);


在发送速率的调整上,感觉比较难办。。。每个包的长度和两个包之间的时间间隔决定了速率,咋调整才能得到比较恒定的速率呢??感觉无规律可寻。。。包越小越好么?

谢谢~~~

...全文
259 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
visualwind 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dustland 的回复:]

发送间隔时间只能用Sleep来调整吧,如果每个包512字节的话,即使Sleep(1),最后得到的发送速率也就4096kbps的样子。。。我又害怕数据包过大的话接收端吃不消,测的不准。。。我好纠结。。。
[/Quote]

那你就把包放大点嘛
DustLand 2010-10-21
  • 打赏
  • 举报
回复
发送间隔时间只能用Sleep来调整吧,如果每个包512字节的话,即使Sleep(1),最后得到的发送速率也就4096kbps的样子。。。我又害怕数据包过大的话接收端吃不消,测的不准。。。我好纠结。。。
visualwind 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dustland 的回复:]

包的大小可以随意设置么?
[/Quote]

可以,但最好设置成2的次方倍
DustLand 2010-10-21
  • 打赏
  • 举报
回复
包的大小可以随意设置么?
傻X 2010-10-21
  • 打赏
  • 举报
回复
给楼主个思路,计时用GetTickCount,每次Send都计算.这个很准确
visualwind 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dustland 的回复:]

但是测试的是链路的吞吐量啊。。。吐了还要吞的啊。。。在百度百科里面搜的:吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示
[/Quote]

那你就调整发送间隔时间
DustLand 2010-10-21
  • 打赏
  • 举报
回复
但是测试的是链路的吞吐量啊。。。吐了还要吞的啊。。。在百度百科里面搜的:吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示
visualwind 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dustland 的回复:]

如果接收端有丢包的话,调整两个包直接的发送时间呢,还是调整包的长度呢?
[/Quote]

这个没关系吧。接收方只管处理接收到的数据量
DustLand 2010-10-21
  • 打赏
  • 举报
回复
如果接收端有丢包的话,调整两个包直接的发送时间呢,还是调整包的长度呢?
visualwind 2010-10-21
  • 打赏
  • 举报
回复
速率这个是统计平均值。你可以设置一个变量记录收发的数据量,设置一个变量记录时间,在一定时间内数据量/时间间隔得到速率

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧