【问题标题】:C# WebClient upload speedsC# WebClient 上传速度
【发布时间】:2012-07-28 00:30:08
【问题描述】:

我想知道是否可以在 WebClient 异步数据上传时增加缓冲区大小,因为目前它的最大值约为 320kB/s。

我当前的代码:

using (WebClient Client = new WebClient())
{
    byte[] Buffer = File.ReadAllBytes(this.WorkItem.FileLocation);

    Client.UploadProgressChanged += new UploadProgressChangedEventHandler(Client_UploadProgressChanged);
    Client.UploadDataCompleted += new UploadDataCompletedEventHandler(Client_UploadDataCompleted);
    Client.UploadDataAsync(new Uri("-snip-"), Buffer);
}

编辑
连接不是限制因素。 (它的 300mbit 连接,网络服务器以 ~30-40mB/s 的速度推送内容)

【问题讨论】:

  • 你的连接速度是多少?
  • 您确定这不是您的网络/连接的限制吗? 0.3Mbps 上行听起来适合许多连接...
  • 重新编辑;这是你在呼唤自己吗?几乎任何其他组合都可能有其他因素限制你......
  • 我已经将专用服务器测试到同一数据中心的其他专用服务器,并将我测试到专用服务器。两种情况下的速度相同。

标签: c# performance upload webclient


【解决方案1】:

如果您想更好地控制数据的缓冲方式,您需要使用HttpWebRequest 类。使用此类,您可以选择从FileStream 读取的读取缓冲区,然后选择写入网络流的量。进行 4MB 读取和 32KB 写入是最大化我的网络吞吐量的最佳选择(尽管您必须进行自己的基准测试才能确定哪些缓冲区最适合您的场景)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2013-05-19
    • 2016-12-18
    • 1970-01-01
    • 2014-06-01
    • 2011-01-11
    相关资源
    最近更新 更多