gpt4 book ai didi

java - java servlet如何确认客户端收到响应

转载 作者:可可西里 更新时间:2023-11-01 02:34:45 25 4
gpt4 key购买 nike

我有一个 java servlet 可以处理来自客户端的 HTTP GET 请求。处理请求后,它会发回 HTTP 200 OK,响应中包含几百字节的数据。

有一个特定的错误条件,客户端在发送响应的同时断开网络连接。 servlet 将数据写入输出流,并刷新输出流,时间安排是在刷新输出流时,服务器不知道客户端未连接。 (连接被客户端和服务器之间的某个点突然切断,因此客户端没有机会正确关闭 TCP 连接 - 服务器看不到 TCP RST。)

问题是,servlet 有没有办法检测到这种情况?我已经检查了两件事:

  1. 我没有在 servlet 中抛出任何异常。我希望这种情况会导致 IOException,但这似乎并没有发生。
  2. 我在用于写入客户端的 PrintWriter 上调用 PrintWriter.checkError(),即使出现这种错误情况,它也返回 false(无错误)。

据我所知,服务器无法知道发生了这种情况。但在我看来,基于客户端 TCP 堆栈缺乏确认,这应该是可能的。但也许这并没有暴露给 servlet。

不确定是否重要,但我使用的是 Tomcat 7.0.26。

最佳答案

不能。响应可能完全由容器缓冲,并且仅在您的 Servlet 代码退出后写入。

您不得对接收响应的客户端建立任何依赖到您的应用程序中。这称为幂等性:查一下。

关于java - java servlet如何确认客户端收到响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155611/

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