- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我打开 UrlConnections,并设置连接超时。有时,会抛出超时,但输入流仍然可读(并且包含数据)
我使用以下代码成功地重现了这一点:
System.setProperty("http.keepAlive", "false");
long length = 0;
while (length == 0) {
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) (new URL("http://www.worldofwargraphs.com").openConnection());
connection.setConnectTimeout(1); // 1ms
connection.connect();
} catch (IOException ex) {
try {
byte[] buf = new byte[8196];
try (InputStream is0 = connection.getInputStream(); InputStream is = new BufferedInputStream(is0, 8196)) {
if (is0 != null) {
int ret = 0;
while ((ret = is.read(buf)) > 0) {
length += ret;
}
}
}
} catch (IOException ex2) {
Logger.getLogger(JavaApplication6.class.getName()).log(Level.SEVERE, null, ex2);
}
}
}
System.out.println(length);
正如您在这段代码中看到的,我尝试打开一个具有较小超时(1 毫秒)的连接,以确保连接超时。然后我尝试读取输入流
问题是,有时当尝试读取流时,我会收到 java.net.SocketTimeoutException: connect timed out
(这是我所期望的),但有时循环 结束,显示读取的字节数(32912)
谁能解释一下为什么有时会发生第二种行为?我尝试用谷歌搜索,但没有找到任何相关信息。
谢谢
最佳答案
您的连接超时时间短得离谱,但连接随后完成,因此您可以阅读。请注意,设置连接超时不会设置读取超时,因此读取会被阻止,直到数据可用为止。
编辑:无论如何,您的代码都是错误的。您应该设置一个实际的连接超时并在收到超时后关闭套接字。在连接异常后继续读取代码没有任何意义。
关于java - ConnectTimeout 并不总是阻止从输入流读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940734/
在我的应用程序中,我打开 UrlConnections,并设置连接超时。有时,会抛出超时,但输入流仍然可读(并且包含数据) 我使用以下代码成功地重现了这一点: System.setProper
运行此代码时: static void Main(string[] args) { SqlConnectionStringBuilder csb = new SqlConnectionStri
所以我使用 tidhttp 来发出 post 请求。当我尝试将 connectTimeout 设置为任意时间段时,它都没有效果。在出现异常之前我仍然等待约 5 秒。提前致谢! 最佳答案 如果您要连接到
如果我们不设置 ConnectTimeout 值,例如“Connect Timeout=60”,(在 SqlCommand 中都没有),它的默认值是多少?我被告知是 15 秒 谢谢 最佳答案 defa
如果你 curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 15); 15 秒后没有建立连接,会发生什么? 最佳答案 根据 this mailing list
我正在尝试为 MongoClient(驱动程序版本 2.13)设置连接超时。 它挂起 10 秒,然后超时。我需要快速超时,因为此代码用于测试。 这是我的代码: String connectionUri
我正在做这个项目,其中一小部分是连接到服务器并做一些事情,如果它在一段时间内无法连接到服务器,则给出错误信息..我知道 curl 代码看起来像这样curl_easy_setopt(c,CURLOPT_
我发现,当为 TIdHTTP 组件设置 ConnectTimeoout 属性时,它会使请求(GET 和 POST)变慢约 120 毫秒? 这是为什么,我可以以某种方式避免/绕过它吗? Env:D201
我的connectTimeout和receiveTimeouts不起作用。这是我的代码: BaseOptions options = new BaseOptions( baseUrl:
我有一个通过 JQuery Ajax 请求的 Servlet。激活的过程需要花费大量时间来执行(最多 3-5 分钟)。我已将 server.xml 中的 connectTimeout 设置为“6000
我们的项目要求支持 Postgres(Postgresql 驱动程序)的“jdbc 超时”功能。我们还支持 Microsoft SQL(JTDS 驱动程序)和 MySQl(mysql 驱动程序)。所以
使用 SSL 时如何在 Indy 中设置 ConnectTimeout/ReadTimeout ? MCVE: program mcve; uses {$IFDEF UNIX}{$IFDEF Us
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Receiving request timeout even though connect timeout and
当我将 ConnectTimeout 设置为 IdSMTP(例如,30 秒)并且 SMTP 服务器不可用时,它从 SMTP 服务器起飞大约 105 秒。 这是版本 10 中的 Indy 组件 - *2
我正在通过 SSH 发送命令。这个特定的命令恰好告诉机器重新启动。不幸的是,这会挂起我的 SSH session 并且不会返回,因此我的脚本无法继续转发到其他任务。 我已经尝试了各种修改命令本身的组合
我有 Spring Boot 基础设施,但微服务很少。他们彼此之间沟通得很好。其中一个微服务有一些第三方调用,通过http调用一些第三方服务。我已经定义了自己的 RestTemplate,并在 ini
因此,我一直在尝试使用 Azure 认知服务文本转语音 REST API 处理一个包含数千个文本文件的文件夹,将每个文件转换为语音。它工作得很好,直到它不起作用。多次成功转换后出现错误。我希望有一个稳
尝试通过客户端连接到 Azure Web App 上托管的 ChromaDB 实例时,我不断收到连接超时错误 import chromadb client = chromadb.HttpClient(
我们在 .NET Core 2.0 Azure 应用服务中偶然收到以下错误日志: StackExchange.Redis.RedisConnectionException: No connection
我们在 .NET Core 2.0 Azure 应用服务中偶然收到以下错误日志: StackExchange.Redis.RedisConnectionException: No connection
我是一名优秀的程序员,十分优秀!