gpt4 book ai didi

c++ - SSL_accept() 抛出 "Invalid argument"错误

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

我正在尝试创建一个客户端/服务器程序,但我发现继续使用数量稀少的 OpenSSL 文档有些困难。

我的问题:SSL_accept 在执行以下代码(简化)时抛出“无效参数”:

SSL* ssl = SSL_new(ctx); // ctx is created earlier
SSL_set_fd(ssl, socket); // socket is created earlier as well
BIO * bio = BIO_new(BIO_s_accept());
BIO_set_fd(bio, socket, BIO_NOCLOSE);
SSL_set_bio(ssl, bio, bio);
SSL_accept(ssl);

我在每次方法调用后检查错误,socket 和 bio 都没有坏。在我尝试调用 SSL_accept 之前,没有任何迹象表明发生了任何奇怪的事情。我假设 ssl 对象在某个地方被破坏了,但我不知道如何~

编辑 在调用 SSL_accept() 时,SSL 对象和 BIO 对象为空。

任何指向正确方向的指针将不胜感激:D

最佳答案

SSL_set_fd() 是手动设置 BIO 的一种方便的替代方法。它会自动创建一个 BIO 并进行设置 - 所以您需要做的就是:

SSL* ssl = SSL_new(ctx);
SSL_set_fd(ssl, socket);
SSL_accept(ssl);

关于c++ - SSL_accept() 抛出 "Invalid argument"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3639760/

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