2011-04-19 17 views
6

¿Cómo puedo configurar el tiempo de espera de conexión para SSL Sockets en Java?SSL Tiempo de espera de conexión de socket

Para conectores simples, puedo simplemente crear una nueva instancia de socket sin ningún punto final de destino utilizando new Socket(), y luego llamar al método connect(SocketAddress endpoint, int timeout). Con sockets SSL, no puedo crear y new SSLSocket()SSLSocketFactory.getDefault().createSocket() método sin punto final lanza UnsupportedOperationException con tomas no conectadas no se han aplicado mensaje.

¿Hay una manera de utilizar los tiempos de espera para la conexión SSL sockets en Java, utilizando únicamente bibliotecas estándar de Java?

Respuesta

6

Creo que usted podría utilizar su enfoque actual de la creación de la Socket y luego conectarlo. Para establecer SSL través de la conexión se puede utilizar SSLSocketFactory.createSocket

Devuelve una toma de capas sobre un zócalo existente conectado a la llamada anfitrión, en el puerto determinado.

De esta manera se obtiene un control total sobre la conexión y luego que negociar la configuración de SSL en la parte superior de la misma. Por favor, avíseme si leí mal su pregunta.

+0

Ah, parece una opción. Probaré eso. Gracias. –

+0

¡Funciona bien, gracias! –

3

con Java 1.7 Lo siguiente no tirar la excepción indicada en la pregunta:

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

por lo que es negocio como de costumbre.

Cuestiones relacionadas