0

我们正在开发需要捕获当前互联网带宽的 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;
    }
    
4

1 回答 1

1

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

如果您的 isp 受到限制,您会在 speedtest 上看到同样的情况。

唯一要记住的是,从服务器下载文件只会给您估计到/从该服务器的速度,而不是“互联网速度”,这是一个实际上并不存在的概念。

于 2017-02-07T05:38:40.467 回答