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