C++ SSL_accept()抛出;无效参数";错误
我正试图创建一个客户机/服务器程序,但我发现很难继续使用数量稀少的OpenSSL文档 我的问题:C++ SSL_accept()抛出;无效参数";错误,c++,openssl,C++,Openssl,我正试图创建一个客户机/服务器程序,但我发现很难继续使用数量稀少的OpenSSL文档 我的问题: SSL\u accept在执行以下代码时抛出“无效参数”(简化): 每次方法调用后,我都会检查错误,套接字和bio都不会出错。在我尝试调用SSL_accept之前,没有迹象表明发生了任何奇怪的事情。我假设ssl对象在某个地方被破坏了,但我不知道如何破坏~ 编辑SSL对象和BIO对象在调用SSL_accept()时不为空 任何指向正确方向的指针都将不胜感激:D像你一样,我也经历了一段缺乏文档的艰难时期
SSL\u accept
在执行以下代码时抛出“无效参数”(简化):
每次方法调用后,我都会检查错误,套接字和bio都不会出错。在我尝试调用SSL_accept之前,没有迹象表明发生了任何奇怪的事情。我假设ssl对象在某个地方被破坏了,但我不知道如何破坏~
编辑SSL对象和BIO对象在调用SSL_accept()时不为空
任何指向正确方向的指针都将不胜感激:D像你一样,我也经历了一段缺乏文档的艰难时期。所以我不能说set\u fd调用是对是错,但是没有这些调用我就可以工作了。我成功使用的调用顺序是:
BIO *sbio = BIO_new_socket( socket, BIO_NOCLOSE );
SSL* ssl = SSL_new(ctx);
SSL_set_bio( ssl, sbio, sbio );
SSL_accept( ssl );
SSL\u set\u fd()
是手动设置BIOs的方便替代方案。它会自动创建一个BIO并对其进行设置-因此您只需执行以下操作:
SSL* ssl = SSL_new(ctx);
SSL_set_fd(ssl, socket);
SSL_accept(ssl);
杰出的问题在于使用bio_s_accept()创建新的bio套接字。我将进一步挖掘原因,但一旦我制作了一个标准的BIO插座,accept就好像一个魔力。太棒了~从阅读文档中,我永远不会明白这一点。谢谢
SSL* ssl = SSL_new(ctx);
SSL_set_fd(ssl, socket);
SSL_accept(ssl);