Java NIO2 Asynchroner SocketChannel / AsynchronousServerSocketChannel und TLS / SSL

8

Alle Quellen / Beispiele im INTERNET, die auf NIO2 verfügbar sind, haben keine TLS / SSL-Unterstützung,

java.nio.channels.AsynchronousSocketChannel java.nio.channels.AsynchronousServerSocketChannel

Wie ich verstehe, unterscheidet sich der SSLEngine-Lebenszyklus der Verbindung von AsynchronousSocketChannel.connect & amp; & amp; AsynchronousServerSocketChanne.accept, TLS / SSL sollte in der AIO-Implementierung gekapselt sein, also wie kann ich beide verwenden ...? HINWEIS: Ich habe also im Grizzly-Projekt ein Video darüber geredet, dass sie es schon umsetzen, Ich schaue auf den Quellcode, aber ich sah AIO aber nicht TLS / SSL-Integration ...

Vielen Dank im Voraus!

    
user1740371 12.10.2012, 07:28
quelle

1 Antwort

3

Der Kommentar zu der ursprünglichen Frage ist in der Tat richtig. SSLEngine arbeitet mit ByteBuffer direkt.

Dies bedeutet, dass es mit AIO kompatibel ist. Sie beginnen mit dem Akzeptieren einer Verbindung. Der Client verbindet sich dann und führt das anfängliche Schreiben durch. Um zu bestimmen, ob genügend Daten gepuffert sind, verwenden Sie den Handshake-Status und Status . Die Engine wird Ihnen weiterhin "NEED_UNWRAP" sagen, wenn am anderen Ende mehr Daten bereitgestellt werden müssen. Sie müssen also eine Reihe von ByteBuffer-Objekten behalten. Gleiches gilt für die Engine, die Ihnen weiterhin "NEED_WRAP" sagt, wenn mehr Daten an das andere Ende gesendet werden müssen, bevor es fortgesetzt werden kann. Du gehst weiter, bis du aus dem Handshake-Status "Beendet" erhältst.

Ich würde jedoch empfehlen, dass Sie etwas wie Netty verwenden, was das viel einfacher macht. Es sollte beachtet werden, dass Netty Unterstützung für AIO in den Alpha-Stufen von 4 hatte. Es wurde jedoch gezeigt, dass AIO langsamer war als NIO. Daher wurde es entfernt.

Aber nicht nur, dass Netty die Dinge einfacher macht, als zu versuchen, NIO oder AIO direkt zu verwenden, sondern es wird auch den Wechsel zwischen den beiden vereinfachen, wenn AIO jemals wieder eingeführt wird.

Ein vollständiges Beispiel für die Verwendung von SSL mit Netty finden Sie hier .

    
pjulien 22.09.2013 19:50
quelle

Tags und Links