HttpWebRequest前两次写入几乎立即发生,为什么?

时间:2012-06-03 05:35:30

标签: c# http file-upload

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

_req.AllowWriteStreamBuffering = false;

但它没有任何区别。

这有点烦人,因为我通过将最后10个写入速度平均在一起来衡量上传速度,所以首先我的应用程序显示出极快的速度,然后再降低到50kbps左右。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

USR是正确的。

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

它本可以将初始数据包背靠背发送,并且在发生故障的交付时降低速度以适应网络问题,之后它可能会再次缓慢地提高速度。

不知道您使用的TCP版本或您的网络状况我只能猜测