非阻塞/异步(epoll) openssl
前段时间在自己的异步网络框架handy中添加openssl的支持,当时在网络上搜索了半天也没有找到很好的例子,后来自己慢慢的摸索,耗费不少时间,终于搞定。因此把相关的资料整理一下,并给出简单的例子,让后学者可以少费些力气。 同步的openssl调用网上已经有许多的例子,这里就不再详细介绍,大家也可以直接读源代码: 同步客户端:https://github.com/yedf/openssl-example/blob/master/sync-ssl-cli.cc 该例子连接www.openssl.com:443,发送一个Http请求,并打印结果中的前256个字符 同步服务器端:https://github.com/yedf/openssl-example/blob/master/sync-ssl-svr.cc 该例子监听本地的443端口,并返回一个简单http响应 下面详细介绍非阻塞调用 1. 初始化SSL库 SSL_load_error_strings (); SSL_library_init (); sslContext = SSL_CTX_new (SSLv23_method ()); //server端需要初始化证书与私钥 string cert = "server.pem", key = "server.pem"; r = SSL_CTX_use_certificate