Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SSL_accept()抛出;无效参数";错误_C++_Openssl - Fatal编程技术网

C++ SSL_accept()抛出;无效参数";错误

C++ SSL_accept()抛出;无效参数";错误,c++,openssl,C++,Openssl,我正试图创建一个客户机/服务器程序,但我发现很难继续使用数量稀少的OpenSSL文档 我的问题: SSL\u accept在执行以下代码时抛出“无效参数”(简化): 每次方法调用后,我都会检查错误,套接字和bio都不会出错。在我尝试调用SSL_accept之前,没有迹象表明发生了任何奇怪的事情。我假设ssl对象在某个地方被破坏了,但我不知道如何破坏~ 编辑SSL对象和BIO对象在调用SSL_accept()时不为空 任何指向正确方向的指针都将不胜感激:D像你一样,我也经历了一段缺乏文档的艰难时期

我正试图创建一个客户机/服务器程序,但我发现很难继续使用数量稀少的OpenSSL文档

我的问题:
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);