我有一个数据库,其中有我想要通过SSL连接的不同主机。因为主机有时是随机的并且通常是无效的,所以在创建套接字时会出现错误。我不知道我怎么能处理这个问题
for(int i=connect.getMinId();i<connect.getMaxId();i++){
System.out.println(connect.getHost(i));
SSLSocket socket = (SSLSocket) factory.createSocket(URL, 443);
socket.startHandshake();
SSLSession session = socket.getSession();
}
答案 0 :(得分:0)
使用new Socket()
创建一个未连接的套接字。
使用Socket.connect(address, timeout)
将其与超时连接。您可以选择自己的超时到平台默认值。请注意,Javadoc不正确表示0表示无限超时。它没有:它意味着平台默认值,大约一分钟,取决于错误的平台。如果超时到期,此方法将抛出SocketTimeoutException
。
使用SSLSocket
将其包裹在SSLSocketFactory.createSocket(Socket, host, port, true)
中。请注意,您必须重新指定主机和端口:这是为了SSL会话共享目的;它不会创建新连接。
获取会话,或开始握手。请注意,获取会话会启动握手,您不必同时执行这两项操作。如果您对服务器证书不感兴趣,则根本不需要执行此步骤。
捕获所有IOExceptions并关闭套接字。