我正在尝试创建具有不同URL的套接字。我如何处理失败的连接?

时间:2013-06-12 12:37:16

标签: java sockets ssl

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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