2011-04-19 201 views
6

如何在Java中爲SSL套接字配置連接超時?SSL套接字連接超時

對於普通套接字,我可以簡單地使用new Socket()創建沒有任何目標端點的新套接字實例,然後調用connect(SocketAddress endpoint, int timeout)方法。使用SSL套接字,我無法創建new SSLSocket()SSLSocketFactory.getDefault().createSocket()方法,沒有端點拋出UnsupportedOperationException未連接的套接字未實現消息。

有沒有一種方法可以在Java中使用標準Java庫的SSL套接字連接超時?

回答

6

我相信你可以使用你目前的方法創建Socket然後連接它。要建立SSL在連接你可以使用SSLSocketFactory.createSocket

返回鋪在連接到指定的主機 的 現有的插座插孔,在給定的端口。

這樣,你得到完全控制連接和然後你negociate在它的上面設置SSL。如果我誤解了你的問題,請告訴我。

+0

啊,看起來像一個選項。我會嘗試。謝謝。 – 2011-04-19 12:02:02

+0

工作正常,謝謝! – 2011-04-19 14:14:30

3

與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(); 

所以它是一切照舊。