【发布时间】:2021-07-19 08:11:18
【问题描述】:
我正在尝试使 SSL_read() block 直到从服务器接收到数据。我尝试在我的“连接”代码中将套接字设置为阻塞
{
u_long iMode = 1;
i = ioctlsocket(sock, FIONBIO, &iMode);
}
但奇怪的是,我每次都会遇到堆栈溢出异常。
还有其他更正确的方法吗?
(注意:如果我省略此代码,应用程序就可以正常工作)。
我已经在这个问题上搜索了 SO,但在任何地方人们似乎都遇到了相反的问题,即在他们想要非阻塞时阻塞。
代码概要:
Get method: TLS_client_method()
Get CTX: SSL_CTX_new(method)
Create socket 'sock'
set socket to blocking (code above)
Connect sock to host on port 443
Create SSL*: ssl=SSL_new(ctx)
SSL_set_fd(ssl, sock)
Do SSL_reads and writes
【问题讨论】:
-
它默认阻止。您已将其设置为 非 阻塞模式。阅读文档。或者注意标志:NBIO:非阻塞 I/O。
标签: sockets ssl openssl blocking