【发布时间】:2015-05-14 14:06:52
【问题描述】:
我有一个使用C处理ssl的程序,步骤如下:
retval = select(maxfd + 1, &rfds, NULL, NULL, &tv);
if (retval == -1) {
//report error
} else if (retval == 0) {
// timeout and reconnect
} else {
do {
memset(buf, 0, buf_len);
count = SSL_read((SSL*)conn->ssl, buf, (int)buf_len);
if (count <= 0) {
error("ssl error is %d", SSL_get_error((SSL*)conn->ssl, count))
error("an error: %s", strerror(errno));
break;
}
} while (conn->ssl && SSL_pending((SSL *)conn->ssl));
}
在某些情况下,SSL_read的返回值 为什么 select 表明套接字已准备好读取,但 SSL_read 超时?如何正确使用 select with SSL_read?谢谢。
【问题讨论】:
-
您使用的是非阻塞套接字吗?套接字操作是否超时?