Java 使用SSLContext创建SocketChannel

Java 使用SSLContext创建SocketChannel,java,sockets,ssl,channel,socketchannel,Java,Sockets,Ssl,Channel,Socketchannel,我希望为SSL套接字实现NIO。但是,我发现的每个示例都使用SocketChannel.open()获取套接字通道 从SSLContext中,我怎样才能获得袜子通道?你不能。这个问题没有意义SocketChannels是纯文本SSLContexts用于SSL。不幸的是,这并不容易。您不能直接创建一个从SSLContext自动使用SSL的SocketChannel 从SSLContext,您可以创建一个SSLEngine,您必须适当地调用它来处理SSL握手。这不是几行代码的问题 我在GitHub上

我希望为SSL套接字实现NIO。但是,我发现的每个示例都使用SocketChannel.open()获取套接字通道


从SSLContext中,我怎样才能获得袜子通道?

你不能。这个问题没有意义<代码>SocketChannels是纯文本
SSLContexts
用于SSL。

不幸的是,这并不容易。您不能直接创建一个从
SSLContext
自动使用SSL的
SocketChannel

SSLContext
,您可以创建一个
SSLEngine
,您必须适当地调用它来处理SSL握手。这不是几行代码的问题


我在GitHub上有一个类,它展示了如何做到这一点。

遗憾的是,这在标准Java库中是不可能做到的

SSL/TLS是使用SSLEngine在Java中实现的,但该类很难正确使用

但也有选择。是一个简单的库,它可以做到这一点:包装一个SSLContext(或SSLEngine)并公开一个ByteChannel接口,在内部完成繁重的工作


(免责声明:我是该库的主要作者)。

我决定选择Netty:)也与客户端auth一起使用:)谢谢您的帮助。与Netty一起使用。