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

本文关键字:为什么 两次 HttpWebRequest | 更新日期: 2023-09-27 18:36:17

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

_req.AllowWriteStreamBuffering = false;

但这并没有产生任何区别。

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

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

有什么想法吗?

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

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

AllowWriteStreamBuffering告诉HttpWebRequest不要缓冲。它不会告诉TCP该怎么做。

USR 是正确的。

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

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

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