首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有阻塞IO的SSLEngine

具有阻塞IO的SSLEngine
EN

Stack Overflow用户
提问于 2016-10-05 14:05:32
回答 1查看 172关注 0票数 1

从SSLEngine文档中可以看到:“通过将SSL/TLS抽象与I/O传输机制分离,SSLEngine可用于各种I/O类型,例如非阻塞I/O (轮询)、可选非阻塞I/O、套接字和传统输入/输出流、本地ByteBuffers或字节数组等。”与使用SSLSocket阻止IO相比,将SSLEngine与常规套接字和阻塞通道一起使用会更好。

EN

回答 1

Stack Overflow用户

发布于 2017-07-22 19:35:15

在一定程度上,是的。NIO不仅仅是关于非阻塞IO的。它还带来了:

一种更高级的应用程序接口,基于包装缓冲区( arrays.

  • "Scattering“buffers,ByteBuffers),而不仅仅是字节缓冲和”收集“接口,即在同一IO中使用多个顺序缓冲区的能力。
  • IO:使用”直接“ByteBuffers,即可以脱离堆。

最后一点具有非常具体的一般性能含义,因为当使用基于堆的数组/缓冲区时,JVM会对在本机调用中发送的任何数组进行额外的复制,以促进与垃圾收集器的同步。使用本机缓冲区可以避免这种情况,这可以显著减少垃圾收集开销。

也就是说,SSLEngine有巨大的可用性问题,因为正确使用它非常困难,特别是比使用好的旧SSLSocket要难得多。

幸运的是,this library允许使用带有ByteChannel接口的SSLEngine,围绕SSLEngine做所有繁重的工作(免责声明:我是主要作者)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39866496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档