在我们的产品中,我们使用 SSLSocketFactory 创建一个到服务器的 SSLSocket。在为服务器创建套接字时,我们根据产品配置使用两种方法之一:
(1) 我们创建一个标准套接字,然后将其包装在 SSLSocket 中。
SSLSocketFactory factory = ...
Socket s = new Socket(host, port);
SSLSocket sslSocket = (SSLSocket)factory.createSocket(s, host, port, true);
(2) 我们简单地创建一个 SSL 套接字:
SSLSocketFactory factory = ...
Socket socket = factory.createSocket(host, port);
在我们的测试环境中,这两种方法都同样有效。然而,在不同的客户站点,我们发现在某些情况下,其中一种方法会导致显着延迟,而另一种方法会立即连接(每次使用不同的方法)。这是不一致的,有时是不可重现的。
谁能说出这些连接方法之间的理论区别是什么,在什么情况下应该推荐哪一种?