gpt4 book ai didi

Java HttpUrlConnection.getInputStream() 延迟

转载 作者:可可西里 更新时间:2023-11-01 11:17:58 26 4
gpt4 key购买 nike

我得到了与 HttpURLConnection getInputStream() has one second delay 中描述的非常相似的行为: 在 Java 中获取 http 连接的 InputStream 会导致至少 500 毫秒的延迟。 InputStreams 已正确关闭。使用 apache httpclient 实现也解决了这个问题。不幸的是,替代品并不适合我的每个用例。

此外,延迟不会出现在所有设置中。到目前为止,我所做的观察如下:

  • 使用 httpclient 库非常棒
  • 在服务器端使用 Windows Server 2012 R2 不会导致延迟,无论是 W7 Professional 还是 W7 Enterprise
  • 客户端的 Java 版本无关紧要(32 位/64 位,7/8)
  • 在客户端使用 Windows 7 Enterprise 或 Linux 非常棒
  • 在客户端使用 Windows 7 Professional 并在主机端使用 Linux 机器会导致(至少)500 毫秒的延迟

另外,把服务器端的Linux全盘骂到别处也不是解决办法,使用Windows 7专业版也不会出现这个问题。

我用 wireshark 监控网络流量以找出差异但没有成功:延迟发生在客户端完全收到响应之后。

最后,问题:Windows 7 Professional(的网络堆栈)是否存在导致此行为的限制?是否可以调整 Windows 设置以防止延迟发生?

最佳答案

您需要了解,在您调用以下方法之一之前,不会创建 TCP 连接:

  • getOutputStream()
  • getInputStream()
  • getErrorStream()
  • getResponseCode()

因此,您看到的延迟是 TCP 握手延迟。您无法在代码中对此做任何事情。

关于Java HttpUrlConnection.getInputStream() 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com