gpt4 book ai didi

c - SSL_connect() 不返回

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:47 25 4
gpt4 key购买 nike

我正在尝试使用 SSL 创建服务器-客户端程序。我在使用 SSL_connect() 时遇到了一些麻烦:当我调用它时,它不会再返回,它只是卡在那里,客户端程序一直在运行,服务器停止等待握手完成。一旦我终止了客户端进程,服务器就会说安全连接失败,所以我几乎 100% 确定这不是服务器的错,因为它等待连接,并尝试正常接受它 (SSL_accept())。

此外,当我的客户端调用 SSL_connect() 时,它会在我的标准输出上打印很多垃圾字符,不知道为什么。

这是我的连接函数的代码:

if((sslconnection = SSL_new(ctx)) == NULL){
return NULL;
}

if(SSL_set_fd(sslconnection, socketd) != 1){
return NULL;
}

printf("We have no problem until here\n");

if((debug = SSL_connect(sslconnection)) == 1){
printf("You won't see this, it's hanged\n");
return sslconnection;
}
printf("Neither will you see this\n");

当然,CTX 和 socketd 都是预先初始化的。提前致谢,伙计们,我们非常欢迎任何帮助!

编辑:如果我使用 SSLv23_method() 创建我的 SSL 上下文,当客户端挂起时,如果我按几次“输入”,它将在终端上显示此消息:

error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

否则,如果我使用 SSLv3_method(),按“enter”会给我这个消息:

error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

我猜我的客户端-服务器程序的 SSL 版本有问题,这很奇怪,因为它们使用相同的函数来初始化它们自己的 SSL_ctx,因此它们使用相同的 SSLvX_method() 来创建上下文,所以它使得他们不了解彼此的 SSL 版本对我来说毫无意义......

最佳答案

如果它对那里的人有帮助:结果是我用来执行 SSL_connect() 的是错误的套接字描述符,正如 Steffen 所说。我在代码的某些地方弄乱了描述符。

关于c - SSL_connect() 不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303558/

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