gpt4 book ai didi

java - 确保收到 `response.getOutputStream().write()`

转载 作者:可可西里 更新时间:2023-11-01 02:55:19 27 4
gpt4 key购买 nike

我按以下方式编写对 HTTP 请求的响应:response.getOutputStream().write()

我想确保客户收到它。

这一定是可能的,因为 TCP 会发送确认。

此要求还暗示写入必须是阻塞操作(我没问题!)。

那么我怎么知道是不是按照上面的方式完成的(我怀疑不是)?有什么规范可以保证吗? 有什么方法可以实现吗?我使用的是 Tomcat 6。

... PS,我的意思是除了让客户端在另一个 HTTP 请求中发送此确认之外的任何方式:)

最佳答案

首先,您可以确保刷新输出流缓冲区:

response.getOutputStream().flush();

保证数据真正发送出去。 TCP 将确保它到达,否则会给您的服务器一个错误,该错误将转化为 IOException。

所以简而言之,如果您可以写入并且没有出现错误,那么您的客户端确实收到了数据。至少在 TCP 堆栈上。客户端显然负责使用消息。

TCP 提供数据完整性和交付保证。它将继续重传,直到接收方确认接收到数据包。但这一切都发生在 TCP 堆栈内部。您的代码可以假设它发生了或者您收到了一个错误。只有这两种情况。

此外,您可能需要确保关闭输出流,否则您的客户端可能会坐在那里缓冲数据,直到它接收到流的结尾。

希望对你有帮助

关于java - 确保收到 `response.getOutputStream().write()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821568/

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