Не знаете, что такое неблокирующий ввод-вывод OpenSSL

В общем, библиотека OpenSSL (C API), кажется, предлагает два способа сделать все: вы можете использовать простые системные сокеты, настроенные по вашему вкусу, или вы можете использовать объекты OpenSSL BIO , которые похожи на потоки.

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

Итак, как лучше всего настроить неблокирующий сокет SSL? Что произойдет, если вы передадите OpenSSL собственный файловый дескриптор, который уже установлен в неблокирующий режим через fnctl ? Вам по-прежнему нужно специально вызывать BIO_set_nbio , чтобы сделать объект BIO неблокирующим?

9
задан Channel72 22 March 2011 в 11:10
поделиться