2011-12-08 7 views

Respuesta

9

Seguro que puedes. Utilice su SSLSocketFactory para crear una toma envolviendo un java.net.Socket ordinario existente:

SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(
     socket, 
     socket.getInetAddress().getHostAddress(), 
     socket.getPort(), 
     true); 
5

@ respuesta de Jan era muy útil (y votado por él), pero tenía que ajustar un poco para conseguir que funcione para me:

SSLSocket sslSocket = (SSLSocket) ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(
         socket, 
         socket.getInetAddress().getHostAddress(), 
         socket.getPort(), 
         true); 
InputStream inputStream = sslSocket.getInputStream(); 
OutputStream outputStream = sslSocket.getOutputStream(); 
// reads from the socket 
Scanner scanner = new Scanner(inputStream); 
// writes to the socket 
OutputStream outputStream = new BufferedOutputStream(outputStream); 

probado con Java 7 y Gmail (smtp.gmail.com) en el puerto 587.

1

He aquí una posible mejora: Si el código es para el lado del servidor en lugar del lado del cliente, añadir esto, y funcionará bien:

sslsocket.setUseClientMode(false); 
sslsocket.startHandshake(); 
Cuestiones relacionadas