C#.Net带宽计算VS Speedtest.net速度

时间:2017-02-07 05:09:55

标签: c# bandwidth bandwidth-throttling speed-test

我们正在开发Windows桌面应用程序,我们需要捕获当前的互联网带宽。 我们按顺序多次下载ZIP文件,但我们的结果与Speed Test不匹配。 我们正在捕获在ACTIVE网卡上收到的字节,但顺序下载并不能提供预期的结果。我们甚至多次尝试并行下载不同的文件,但都失败了。

只有当我们并行下载不同的文件并同时使用Speed Test进行测试时,我们才获得成功。

现在这里是我的几个问题:

  1. TCP HOPS之间的带宽是否会影响我们的带宽?
  2. TCP HOPS之间的流量是否会影响我们的带宽?
  3. 如何使用HTTP / TCP下载和C#.NET有效地消耗整个带宽?
  4. ISP是否会限制每个TCP套接字连接的带宽?
  5. 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;
    }
    

1 个答案:

答案 0 :(得分:0)

没有互联网“速度”这样的东西,只有两台主机之间的速度,如果你有一台千兆以太网上的计算机和一台服务器也在千兆以太网上,即使途中只有一个节点饱和速度会下降,当你使用speedtest.net它有很多关闭服务器(包括你的isp中的一个),所以你会得到一个非常积极的估计。

如果你的黄蜂受到限制,你会在最快的时候看到它。

唯一需要记住的是,从服务器下载文件只能估计服务器的TO / FROM速度,而不是“互联网速度”,这是一个真正不存在的概念用。