0

我有一个数据库,其中有我想通过 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();
}
4

1 回答 1

0
  1. 使用 .创建一个未连接的 Socket new Socket()

  2. 使用超时连接它Socket.connect(address, timeout)。您可以选择自己的超时时间,直至平台默认值。请注意,Javadoc 不正确地说 0 表示无限超时。它没有:这意味着平台默认值,大约一分钟,取决于错误的平台。SocketTimeoutException如果超时过期,此方法将抛出。

  3. 将其包裹在SSLSocketwith 中SSLSocketFactory.createSocket(Socket, host, port, true)。请注意,您必须重新指定主机和端口:这是出于 SSL 会话共享的目的;它不会创建新的连接。

  4. 获取会话,或开始握手。请注意,获取会话会启动握手,您不必同时执行这两个操作。如果您对服务器证书不感兴趣,则根本不需要执行此步骤。

  5. 捕获所有 IOExceptions 并关闭套接字。

于 2013-06-13T01:26:53.543 回答