精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
事件驱动是异步处理的一种模式,异步是提交请求,等待底层通知的开发模式,比线程加select模式要友好,有更多灵活处理,但是openssl是不支持异步事件模式的,不过锐英源对openssl使用上经验丰富,克服了这方面的问题,下面是国外网站上对此问题的讨论,翻译下,共享给大家。
-----------------------------
当 OpenSSL 有传入的“读取”数据时,我正在寻找事件回调函数。OpenSSL 有这种功能吗?如果是的话,请给我一些示例代码好吗?我正在考虑为我的应用程序编写一个简单的包装器。当数据到达时,此包装器将进行回调。我最初的想法是创建一个以非阻塞模式循环的线程来扫描任何传入的数据。当数据到达时,我会进行回调。我在这里做正确的事吗?
Boost.Asio支持异步 SSL 读取操作。
CyaSSL SSL 库(类似于 OpenSSL,但具有更小的占用空间和其他很酷的功能)具有类似于您正在寻找的 I/O 回调,我相信。 在 CyaSSL 中,输入/输出回调由ssl.h 中的CallbackIOSend和CallbackIORecv原型化。这些函数需要在每个 SSL_CTX 中使用CyaSSL_SetIOSend()和CyaSSL_SetIORecv()注册。默认情况(CBIOSend() 和 CBIORecv() 注册在 cyassl_io.c 的底部。 CBIOSend 和 CBIORecv 函数指针可以指向您的自定义 I/O 函数。您可以使用默认的 Send() 和 Receive() 函数(EmbedSend() 和 EmbedReceive(),位于 cyassl_io.c)作为示例。
----------------------------