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



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

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

下面是我的几个问题:

  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;
    }
    

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

如果你的isp被抑制了,你在速度测试中也会看到它。

唯一需要记住的是,从服务器下载文件只会给你一个到达/离开该服务器的速度的估计,而不是"网速",这是一个一开始并不存在的概念。

最新更新