SSL套接字连接超时。

如何在Java中为SSL套接字配置连接超时? 对于普通套接字,我可以简单地使用
new Socket()
创建没有任何目标端点的新套接字实例,然后调用connect(SocketAddress endpoint,int timeout)方法。使用SSL套接字,我无法创建
new SSLSocket()
SSLSocketFactory.getDefault().createSocket()
方法,并且没有端点抛出
UnsupportedOperationException
且未连接套接字未实现消息。 有没有办法仅使用标准的Java库在Java中使用SSL套接字的连接超时?
已邀请:
我相信您可以使用当前的方法来创建
Socket
,然后将其连接。要在连接上建立
SSL
,可以使用
SSLSocketFactory.createSocket
返回一个分层的套接字 现有插座已连接至指定 主机,位于给定的端口。 这样,您可以完全控制连接,然后协商在其上设置SSL。如果我读错了您的问题,请告诉我。
使用Java 1.7,以下内容不会引发问题中所述的异常:
String host = \"example.com\";
int port = 12345;
int connectTimeout = 5000;
SSLSocket socket = (SSLSocket)SSLSocketFactory.getDefault().createSocket();
socket.connect(new InetSocketAddress(host, port), connectTimeout);
socket.startHandshake();
因此照常进行。
详细说明@predi \的答案,我发现我也需要使用\“ setSoTimeout \”。否则有时它会卡在握手中(在非常不稳定的连接上):
    final int connectTimeout = 30 * 1000;
    SSLSocket socket = (SSLSocket) SSLSocketFactory.getDefault().createSocket();
    socket.setSoTimeout(connectTimeout);
    socket.connect(new InetSocketAddress(hostAddress, port), connectTimeout);
    socket.startHandshake();
    socket.setSoTimeout(0);`

要回复问题请先登录注册