我们正在开发Windows桌面应用程序,需要在其中捕获当前的互联网带宽。我们按顺序多次下载ZIP文件,但结果与速度测试不匹配。我们正在捕获ACTIVE网卡上接收到的字节,但顺序下载并不能提供预期的结果。我们甚至多次尝试并行下载不同的文件,但都失败了。
只有当我们并行下载不同的文件并同时使用速度测试进行测试时,我们才能获得成功。
下面是我的几个问题:
- TCP HOPS之间的带宽会影响我们的带宽吗
- TCP HOPS之间的流量会影响我们的带宽吗
- 如何使用HTTP/TCP下载和C#有效地消耗整个带宽。NET
- ISP是否限制每个TCP套接字连接的带宽
-
ISP是否向http://www.speedtest.net?(可能是可能的,因为它总是可以显示预期的结果,但其他网站不能)
for (int downloadCount = 0; downloadCount < iterations; downloadCount++) { try { string downloadUrl = GetUniqueDownloadUrl(); bool isValidUrl = Uri.IsWellFormedUriString(downloadUrl, UriKind.Absolute); if (true != isValidUrl) { return result; } // Download file and register total time to download file. Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); byte[] fileContent = webclient.DownloadData(new Uri(downloadUrl, UriKind.Absolute)); stopwatch.Stop(); double downloadTime = stopwatch.ElapsedMilliseconds / 1000; // Milliseconds to Seconds // Convert bytes to Mbits. fileSizeInMbits = fileContent.Length / 125000; // bytes to Megabits double speed = fileSizeInMbits / downloadTime; // speed in Mbps // Store speeds for average calculation. speeds.Add(speed); } catch (Exception e) { result.Error = e; break; } } } // Calculate average bandwidth for total successful downloads. double totalAvgSpeed = speeds.Average(); result.FileSizeInMB = fileSizeInMbits / 8; result.Speed = Math.Round(totalAvgSpeed, 2, MidpointRounding.AwayFromZero); return result; }
没有互联网"速度"这回事,只有两台主机之间的速度,如果你有一台计算机在千兆以太网上,一台服务器也在千兆以太网下,即使路上只有一个节点饱和,速度也会下降,当你使用speedtest.net时,它有很多关闭的服务器(可能包括你的isp上的一台),所以你会得到一个非常积极的估计。
如果你的isp被抑制了,你在速度测试中也会看到它。
唯一需要记住的是,从服务器下载文件只会给你一个到达/离开该服务器的速度的估计,而不是"网速",这是一个一开始并不存在的概念。