2011-12-08 15 views

Odpowiedz

9

Pewnie, że możesz. Użyj SSLSocketFactory stworzyć gniazdo zawijania istniejącego regularnego java.net.Socket:

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

@ odpowiedź Jana był pomocny (i głosowałem na niego), ale musiałem podkręcić trochę zmusić go do pracy mi:

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

Testowane z Java 7 i Gmaila (smtp.gmail.com) na porcie 587.

1

Oto możliwa poprawa: Jeśli kod jest na stronie serwera, a nie po stronie klienta, należy dodać to, i będzie działać poprawnie:

sslsocket.setUseClientMode(false); 
sslsocket.startHandshake(); 
Powiązane problemy