gpt4 book ai didi

c - 将 SSL 集成到使用 BSD 套接字的程序中

转载 作者:太空狗 更新时间:2023-10-29 17:21:38 24 4
gpt4 key购买 nike

我有一个 TCP 网络库,它实现了一堆协议(protocol)(redis、http 等),它们是使用 BSD 套接字实现的。

许多代码使用了 select() 和其他适用于 BSD 套接字的函数。我假设这不适用于 SSL 套接字是否正确?或者他们会照原样工作吗?

我只是想知道 SSL 和 BSD 套接字是否如此不同以至于它们需要完全不同的实现方法。

最佳答案

假设您指的是 OpenSSL,它位于套接字之上,并没有取代它。所以所有直接套接字操作,如 select(),仍然有效。然而,不同之处在于 OpenSSL 为您处理读取和写入,因此您可以将 recv() 替换为 ssl_read()send()使用 ssl_write(),但您仍然可以(并且在某些情况下需要)直接使用 select()。但是,您不能随心所欲地调用它,您必须等到 OpenSSL 告诉您调用它。因此,例如,如果您有一个读取循环,它首先调用 select(),然后仅在 select() 报告时调用 recv()可读性,您将不得不交换该逻辑。先调用 ssl_read(),然后仅当 ssl_read() 返回 SSL_ERROR_WANT_READ 时调用 select() code>SSL_ERROR_WANT_WRITE(注意ssl_read()可以在内部进行写操作,ssl_write()可以在内部进行读操作)。

关于c - 将 SSL 集成到使用 BSD 套接字的程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com