【问题标题】:Simulate file download over long distance [duplicate]模拟长距离文件下载[重复]
【发布时间】:2013-11-12 19:17:37
【问题描述】:

我有以下功能块,当客户端在美国附近的​​某个地方访问服务器时,它可以正常工作。但是,当客户端距离较远时,如东欧,大文件下载失败。关于如何模拟来自远程 IP 地址的流量的任何想法?或任何其他使下载速度更快的想法。

文件大小适中,即 100 MB。它们与提供网站的服务器位于同一台服务器上。我正在使用 C# .NET Framework 4.5 IIS 8

System.IO.Stream stream = null;
int bytesToRead = 262144;
byte[] buffer = new Byte[bytesToRead];

try
{
    var response = HttpContext.Current.Response;
    response.ClearContent();
    response.Clear();

    //get file from file system
    string path = Properties.Settings.Default.DownloadDirectory + fileId;
    var fileInfo = new FileInfo(path);
    if (fileInfo.Exists)
    {
        using (stream = new FileStream(path, FileMode.Open))
        {
            response.ContentType = mimeType;

            response.AddHeader("Content-Disposition", "attachment; filename=\"" + name + "\"");
            response.AddHeader("Content-Length", fileInfo.Length.ToString());

            int length;
            do
            {
                if (response.IsClientConnected)
                {
                    length = stream.Read(buffer, 0, bytesToRead);
                    response.OutputStream.Write(buffer, 0, length);
                    response.Flush();
                    buffer = new Byte[bytesToRead];
                }
                else
                {
                    length = -1;
                }
            } while (length > 0);

            stream.Close();
            response.End();
        }
    }
}

【问题讨论】:

  • ipfw,上个问题中提到的就是我用来做这个的。

标签: c# asp.net file-transfer windows-server-2012


【解决方案1】:

我们最终使用了 HttpResponse.TransmitFile。它直接写入响应输出流,而不缓冲到内存中。然后我们使用世界不同国家的代理对其进行了测试。

【讨论】:

    【解决方案2】:

    为了设置测试环境,有一些工具可以模拟 WAN 连接。

    How do I simulate a low bandwidth, high latency environment?

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      相关资源
      最近更新 更多