我正在开发一个与OpenSSL通信的Linux应用程序。我目前正在运行一些健壮性测试,其中一个让我很难。
当我的程序正在下载一个大文件时,我拔掉了以太网电缆,我希望它在30秒后停止,例如。但它从未停止。
我使用SSL_read,这是它阻塞的地方:
count = SSL_read(ssl, buffer, BUFSIZE);
是否可以为SSL_read设置超时?
我试过SSL_CTX_set_timeout()
,但它不工作。我还看到它可能可以使用select()
,但我不知道如何使用它与SSL_read()
1条答案
按热度按时间4c8rllxm1#
你可以用和“普通”套接字一样的方法来做。基本上,你在一个传递给ssl的套接字上设置
timeval
,如果没有收到任何东西,那么当timeval
中设置的时间过去时,SSL_read
将返回-1。下面的例子(不感兴趣的部分用pseudo编写):