- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果这听起来是一个非常愚蠢的问题,我很抱歉,但是谷歌搜索了很长一段时间没有给出这个问题的答案。
我正在尝试为我与服务器建立的连接设置超时,我正在使用 HttpComponentsClientHttpRequestFactory
并尝试按如下方式设置超时:
clientHttpRequestFactory.setConnectTimeout(timeout);
但是,我看到还有另一种方法 setReadTimeout()
,所以我不确定在我从服务器获得响应之前使用哪个方法设置超时是正确的。关于 HttpComponentsClientHttpRequestFactory 的文档对此不是很清楚。
谁能解释一下这两种方法的区别?
编辑: 我的想法是,如果网络不可靠,我应该设置 setConnectTimeout()
和 setReadTimeout()
应该当服务器不可靠时设置。对吗?
最佳答案
ConnectTimeout
是创建连接的超时时间。假设您有一个不可靠的服务器,您只想等待 15 秒就可以告诉用户“出了点问题”。
ReadTimeout
是连接时的超时时间,您在 read()
上被阻塞,如果读取阻塞超过 超时
。
现实生活中的例子是检查特定网站是否正常运行。唯一可靠的测试方法是尝试连接到它。您可能能够连接到它,它可能会拒绝您的连接,或者由于网络问题它只是卡在连接上。这就是连接超时的用武之地。
读取超时在应用程序协议(protocol)中很有用,在该应用程序协议(protocol)中,客户端需要每隔一段时间发送一次“心跳”,让它们知道它们仍然处于连接状态(如果服务器定期回写给客户端,则这不是没有必要,但情况并非总是如此)。您将使用心跳时间的读取超时(加上一些额外的),如果它超时,那么您可以假设客户端已断开连接并关闭套接字。
关于java - setReadTimeout() 和 setConnectTimeout() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480322/
我正在打开一个 HttpUrlConnection 并使用其继承的 setConnectTimeout 方法设置连接超时,但对于一个特定的 URL,我遇到了网关超时(504)。我不介意这样的网关超时,
我有一个 Android 应用程序连接到服务器搜索更新。如果服务器需要很长时间才能响应(+500 毫秒),我必须完成我的方法并继续执行程序。 我已经将 readTimeout 和 connectTim
我在我的应用程序中使用 HttpURLConnection 与我的服务器通信。但我发现如果我的 Android 设备连接不良,我的应用程序将挂起很长时间,这是一种糟糕的用户体验。我同时使用 setCo
我正在尝试像这样使用 setConnectTimeout 函数: protected HttpURLConnection getConnection() throws SocketTimeoutExc
我正在使用 HTTPUrlConnection 连接到一个简单的 RSS 提要。它完美地工作。我想为连接添加超时,因为我不希望我的应用程序在连接不良或其他情况下挂起。这是我使用的代码,setConne
我尝试将我的项目从 XE8 转移到 XE10.1 DataSnap 客户端模块有 SQLConnection1: TSQLConnection 当我将属性 Driver.ConnectTimeout
如果这听起来是一个非常愚蠢的问题,我很抱歉,但是谷歌搜索了很长一段时间没有给出这个问题的答案。 我正在尝试为我与服务器建立的连接设置超时,我正在使用 HttpComponentsClientHttpR
这是我的代码: URL u = new URL("http://www.google.com"); URLConnection conn = u.openConnection();
谁能解释一下这两者之间的区别: client = HttpClientBuilder.create() .setConnectionTimeToLive(1, TimeUnit.MINUTES
我是一名优秀的程序员,十分优秀!