我有一个缓冲 SSL 连接的 BIO 对象。如何轮询连接以查看是否可以在不阻塞的情况下调用读取?
OpenSSL 网站说:
有时与阻塞套接字一起使用的一种技术是使用系统调用(例如 select()、poll() 或等效的)来确定数据何时可用,然后调用 read() 来读取数据。不应该使用与 BIO 等效的方法(即在底层 I/O 结构上调用 select(),然后调用 BIO_read() 来读取数据),因为对 BIO_read() 的一次调用可能会导致多次读取(并在SSL BIO 的情况)在底层 I/O 结构上,因此可能会阻塞。相反, select() (或等效的)应该与非阻塞 I/O 结合使用,因此连续读取将请求重试而不是阻塞。
这里的问题是我无法更改连接的类型,因为它是在其他地方建立的。还有其他方法可以实现我的目标吗?