小编yax*_*636的帖子

基于事件的openssl bio

我在https://gist.github.com/darrenjs/4645f115d10aa4b5cebf57483ec82eca找到了示例代码,它使用 openssl BIO 来实现“非阻塞”套接字 IO。

但是在 main 函数中poll只监听 stdin 和 socket fd。民意调查从不听 rbio 和 wbio。

这是否意味着功能BIO_writeBIO_read阻塞?如果他们正在阻塞它会使代码阻塞吗?如果他们没有阻止为什么poll函数不听BIO

我尝试使用BIO_get_fd函数,但它总是返回 0。我认为它不应该将 fd 创建为默认值。我试图用 init BIO*bio = BIO_new(BIO_s_fd())但仍然BIO_get_fd返回 0。

我创建了两个管道int pipes[2][2]使用函数BIO_set_fd,并将管道 [0][1] 提供给 rbio,并将管道 [1][1] 提供给 wbio。BIO_write以这种方式工作。但是SSL_read函数失败并出现错误SSL_ERROR_SYSCALL我认为这意味着SSL_read尝试读取管道 [0][1]。我知道管道是一种使用方式;pipe[0] 将用于读取 pipe[1] 将用于写入。但是我没有找到将 pipe[0] pipe[1] 设置为相同 BIO 的方法。

是否可以实现到 openssl BIO 的管道?

如果我不能说 openssl 来创建他们的 BIO …

c openssl

10
推荐指数
1
解决办法
275
查看次数

标签 统计

c ×1

openssl ×1