HttpWebRequest 前两次写入几乎立即发生,为什么
本文关键字:为什么 两次 HttpWebRequest | 更新日期: 2023-09-27 18:36:17
使用 HttpWebRequest 上传文件时,对请求流的前两次写入总是几乎立即完成。我认为一定发生了某种缓冲,所以我禁用了,所以我做了这个
_req.AllowWriteStreamBuffering = false;
但这并没有产生任何区别。
这有点烦人,因为我通过平均最后 10 个写入速度来测量上传速度,所以起初我的应用程序显示出非常快的速度,然后回落到 50kbps 左右。
如果我能从第一次写入开始测量速度,那就太好了。
有什么想法吗?
TCP 堆栈可能会非常快速地从应用程序中获取初始写入窗口。它在后台发送数据(在立即接受数据后)。
AllowWriteStreamBuffering
告诉HttpWebRequest
不要缓冲。它不会告诉TCP该怎么做。
USR 是正确的。
还应该补充的是,这可能与TCP的工作方式有关。
它本可以背靠背发送初始包,并且在交付失败时会降低速度以适应网络问题,之后它可能会再次缓慢提高速度。
不知道您使用的TCP版本或网络状况,我只能对此进行猜测