使用连接构造函数创建的套接字的连接超时是多少?
在 Java SE 6 中,以下 Socket 构造函数将立即连接套接字,而不必在构造后对其调用 connect:
Socket(InetAddress address, int port)
Socket(InetAddress host, int port, boolean stream)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
Socket(String host, int port)
Socket(String host, int port, boolean stream)
Socket(String host, int port, InetAddress localAddr, int localPort)
尽管 Java SE 人员创建了 500 种构造套接字的方法既方便又好用,因此您只需浏览 500 种方法即可找到符合您要求的方法(而不是调用new Socket()
后跟Socket#connect()
),但没有一个这些构造函数的文档说明了连接超时是什么或它们是否/如何调用connect(SocketAddress endpoint, int timeout)
。
也许构造函数文档中谈论的内容createSocketImpl
暗示了超时,或者其他地方的一些文档说了什么?
任何人都知道这些构造函数的实际连接超时是多少?
背景:好的,假设规范确实模棱两可(我认为 Java 是可移植的?),我试图弄清楚为什么客户的代码在看似随机的时间冻结。我有一些代码调用了一些调用这些构造函数之一的开源库。我想知道调用这些构造函数之一是否会使超时无限或很长。我不知道客户使用的是什么版本的 JDK,所以如果规范在某处说超时,那就太好了。我想我可能可以从我的客户那里获得 JDK 版本,但它可能是闭源 JDK。在那种情况下,我可以对他们版本的 SE 库中的代码进行逆向工程以找出答案吗?难吗?我会进监狱吗?