Java,增加套接字超时

标签 java sockets timeout

我有一个简单的服务器客户端应用程序。一切正常,但在某个阶段需要超过 5 分钟才能从服务器获得响应(这是正常的,需要像这样)。问题是,如果花费的时间超过 5 分钟,我就会不断收到此异常:java.net.SocketTimeoutException: Read timed out

所以我想知道在 Windows 上或在我可以设置的 Java 虚拟机上是否有一些默认的套接字超时?我无法更改客户端代码,所以 setSoTimeout() 不适合我。

使用 Windows XP..

编辑:据我所知,套接字连接未在客户端打开。它从服务器传递过来。所以我反编译了服务器 jar 文件。但是仍然找不到关于超时的任何信息。

最佳答案

默认套接字超时为0,表示永不超时。如果它真的在 5 分钟后超时,则表示它已在代码中设置。如果源不可用,并且没有配置,您可以尝试反编译该类,并查找 setSoTimeout 调用。

由于评论以及搜索未发现任何 setSoTimeout() 调用这一事实,您可以采用不同的方法。让它超时,然后编写一个小脚本,在它超时的情况下重试调用。如果你可以从命令行调用你的客户端,你可以解析输出,如果它在 stderr 上。

关于Java,增加套接字超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951486/

相关文章:

sql-server - SqlException 超时已过期但未达到

java - Maven 在 Eclipse 中构建而不使用命令提示符

sockets - 所有端口都执行相同的工作?

python - 多端口网络应用

apache - 是否可以将端口 80 用于 HTTP 和 Web 套接字流量?

ruby - Timeout::Error 不是在 Ruby 中拯救

javascript - 超时后调用函数数组 - JavaScript

java - 未找到 Gradle DSL 方法 : 'google()'

java - Java中增强的for循环的语法是什么?

java - 在 ubuntu 11.04 上运行 selenium xvfb