【发布时间】:2011-06-06 08:19:37
【问题描述】:
我的应用程序将使用代理,其中一些,我如何知道每个代理提供的下载速度,我想先使用速度最高的代理,寻找简单的实现。
请提供建议,粗略的想法也欢迎。
提前谢谢你。
【问题讨论】:
标签: c# .net windows http webclient
我的应用程序将使用代理,其中一些,我如何知道每个代理提供的下载速度,我想先使用速度最高的代理,寻找简单的实现。
请提供建议,粗略的想法也欢迎。
提前谢谢你。
【问题讨论】:
标签: c# .net windows http webclient
您可以使用多个动态创建的后台工作人员从每个代理启动下载
使用基于 http://www.devtoolshed.com/content/c-download-file-progress-bar
您可以使用ReportProgress 句柄来测量下载速度并停止具有最高延迟的后台工作程序。
使用这种技术,您可以选择只从每个代理下载 5-10%,然后丢弃最慢的
【讨论】:
您没有提供任何有关如何实现此功能的详细信息 - 您已将其标记为 c# 和 .net - 这是否意味着您将使用这些程序构建您的测试工具?
简单的答案是测量下载一个已知大小的文件需要多长时间。但实际上,您需要从不同位置下载大量文件,然后根据大小绘制时间 - 然后在点上拟合一条线(使用最少 r^2 是最简单的方法)。它跨越时间访问的点将为您提供平均端到端延迟,斜率是平均带宽。请注意,这与连接的带宽不同 - 只是衡量有效吞吐量的指标。
OTOH,如果您想使用来自您服务器的真实网络流量在很长一段时间内测量有效带宽和延迟,请查看 Yahoo Boomerang。
【讨论】:
每秒接收的总字节数不会告诉您接收的带宽或速度是多少。当然,为了准确,必须每秒钟计算一次。
但同样,在任何时间点都只有一个代理流可以获取流量,对吗?哪个代理在更大的时间内获得更多的时间片,那么它就有更多的带宽。
希望我的理解是正确的!!如果没有,请道歉。
【讨论】: