我有一个简单的服务器客户端应用程序。一切正常,但在某个阶段需要超过 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/