В общем, библиотека OpenSSL (C API), кажется, предлагает два способа сделать все: вы можете использовать простые системные сокеты, настроенные по вашему вкусу, или вы можете использовать объекты OpenSSL BIO
, которые похожи на потоки.
Однако я ' m часто путают дублированный функционал. Например, как сделать SSL-соединение неблокирующим? Один из способов состоит в том, чтобы просто получить доступ к базовому файловому дескриптору и установить для него неблокирующий режим с помощью fcntl
. Но есть также функция API OpenSSL под названием BIO_set_nbio
, которая принимает объект BIO *
и устанавливает его в неблокирующий режим.
Итак, как лучше всего настроить неблокирующий сокет SSL? Что произойдет, если вы передадите OpenSSL собственный файловый дескриптор, который уже установлен в неблокирующий режим через fnctl
? Вам по-прежнему нужно специально вызывать BIO_set_nbio
, чтобы сделать объект BIO
неблокирующим?