gpt4 book ai didi

java - setReadTimeout() 和 setConnectTimeout() 有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:23 37 4
gpt4 key购买 nike

如果这听起来是一个非常愚蠢的问题,我很抱歉,但是谷歌搜索了很长一段时间没有给出这个问题的答案。

我正在尝试为我与服务器建立的连接设置超时,我正在使用 HttpComponentsClientHttpRequestFactory 并尝试按如下方式设置超时:

clientHttpRequestFactory.setConnectTimeout(timeout);

但是,我看到还有另一种方法 setReadTimeout(),所以我不确定在我从服务器获得响应之前使用哪个方法设置超时是正确的。关于 HttpComponentsClientHttpRequestFactory 的文档对此不是很清楚。

谁能解释一下这两种方法的区别?

编辑: 我的想法是,如果网络不可靠,我应该设置 setConnectTimeout()setReadTimeout() 应该当服务器不可靠时设置。对吗?

最佳答案

ConnectTimeout 是创建连接的超时时间。假设您有一个不可靠的服务器,您只想等待 15 秒就可以告诉用户“出了点问题”。

ReadTimeout 是连接时的超时时间,您在 read() 上被阻塞,如果读取阻塞超过 超时

现实生活中的例子是检查特定网站是否正常运行。唯一可靠的测试方法是尝试连接到它。您可能能够连接到它,它可能会拒绝您的连接,或者由于网络问题它只是卡在连接上。这就是连接超时的用武之地。

读取超时在应用程序协议(protocol)中很有用,在该应用程序协议(protocol)中,客户端需要每隔一段时间发送一次“心跳”,让它们知道它们仍然处于连接状态(如果服务器定期回写给客户端,则这不是没有必要,但情况并非总是如此)。您将使用心跳时间的读取超时(加上一些额外的),如果它超时,那么您可以假设客户端已断开连接并关闭套接字。

关于java - setReadTimeout() 和 setConnectTimeout() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480322/

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