ssl - 将 SSL 添加到基于 IOCP 的 Windows 服务器的最简单方法?

标签 ssl winsock iocp

我有一个我们已经使用了很长时间的基于 IOCP 的服务器。现在我们需要为此添加 SSL 支持。我正在努力寻找一个干净的解决方案。我在其他两个线程中找到了两个建议的选项 -

1) 使用 openssl Memory BIO - 但尚未在网络上找到任何与 IOCP 端口一起使用的示例,这些示例解释了由于 IOCP 的多线程特性而导致的问题。 2) 将 Boost ASIO 与 ssl 一起使用——我认为它在内部使用 IOCP。但是没有示例显示如何存储每个连接状态数据 - 例如,在我们的服务器中,为每个连接的客户端存储状态信息,该状态信息用于识别客户端并相应地解析客户端发送的数据。

如果您能针对上述两个问题提出解决方案或任何其他对您有用的解决方案,我将不胜感激。

更新:我正在使用 Simple C 在 winsock2 库中实现 IOCP。

最好的问候 尼拉德里

最佳答案

在这里查看我的回答:How do I use OpenSSL with WinSock?

我写了一篇文章,其中包含将 OpenSSL 与异步套接字结合使用的代码。文章的代码显示了 MFC 的异步套接字,但理论与 IOCP 相同。

我使用了文章中介绍的设计变体来支持 OpenSSL,它是我基于 IOCP 的服务器框架的一部分;看这里:http://www.serverframework.com/products---the-ssltls-using-openssl-option.html .

关于ssl - 将 SSL 添加到基于 IOCP 的 Windows 服务器的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462472/

相关文章:

c++ - OpenSSL:尝试使用通过握手获得的 key Material 在本地加密数据

c - 发送/接收是否以相同的 block 传输数据?

支持重叠 I/O(用于 IOCP)的计时器?

sockets - Winsock 阻塞套接字,多线程死锁

c++ - 使用 IOCP 时从两个线程调用 WSASend() 和 WSARecv() 是否安全?

c++ - 当当前没有 wsarecv 时,传入数据会发生什么情况

google-maps - SBL-EAI-04116 :HTTP Internet Exception during 'Data Send' : 'An error occurred in the secure channel support' , 代码: '12157'

android - App Engine 中运行的是哪种类型的服务器?

reactjs - 如何使用 HTTPS 启动 React 项目

c++ - Winsock 2 可移植性