【发布时间】:2017-09-22 16:24:49
【问题描述】:
一般来说,OpenSSL 库 (C API) 似乎提供了两种方法来完成所有事情:您可以使用根据自己的喜好配置的普通系统套接字,或者您可以使用类似于流的 OpenSSL BIO 对象。
但是,我经常对一些重复的功能感到困惑。例如,如何使 SSL 连接无阻塞?一种方法似乎是简单地访问底层文件描述符并使用fcntl 将其设置为非阻塞。但是还有一个名为 BIO_set_nbio 的 OpenSSL API 函数,它接收 BIO* 对象并将其设置为非阻塞模式。
那么设置非阻塞 SSL 套接字的最佳方法是什么?如果您通过fnctl 将已经设置为非阻塞模式的本机文件描述符传递给OpenSSL,会发生什么?是否还需要专门调用BIO_set_nbio 使BIO 对象不阻塞?
【问题讨论】:
标签: c security ssl openssl nonblocking