1

使用 HttpWebRequest 上传文件时,前两次写入请求流总是几乎立即完成。我认为一定有某种缓冲发生所以我禁用所以我这样做了

_req.AllowWriteStreamBuffering = false;

但这并没有什么不同。

这有点烦人,因为我通过平均最后 10 次写入速度来测量上传速度,所以起初我的应用程序显示出异常快的速度,然后又回落到 50kbps 左右。

如果我可以从第一次写入开始测量速度,那就太好了。

有任何想法吗?

4

2 回答 2

1

TCP 堆栈可能会很快从应用程序中获取初始写入窗口。它在后台发送数据(在立即接受之后)。

AllowWriteStreamBuffering告诉HttpWebRequest不要缓冲。它没有告诉 TCP 做什么。

于 2012-06-03T11:13:08.587 回答
0

USR 是正确的。

还应该补充一点,这可能与 TCP 的工作方式有关。

它可能已经将初始包背靠背发送,并且在交付失败时会降低速度以适应网络问题,之后它可能会再次缓慢提高速度。

不知道您使用什么 TCP 版本或您的网络状况,我只能对此进行推测

于 2012-08-16T09:44:05.110 回答