在调用某些SSL函数后,我的getline
读取循环已停止读取输入。以前我曾经:
std::string input;
...
while (std::getline(std::cin, line)) {
...
}
这很好用。但是在用SSL封装套接字之后,不再读取控制台的输入。
SSL* ssl_fd = SSL_new(ctx);
if (NULL == ssl_fd) {
close(new_fd);
continue;
}
if (0 == SSL_set_fd(ssl_fd, new_fd)) {
close(new_fd);
continue;
}
if (1 != SSL_accept(ssl_fd)) {
ERR_print_errors_fp(stderr);
close(new_fd);
continue;
}
while (std::getline(std::cin, line)) {
...
}
我尝试添加一些调用来清除任何缓冲区问题(std::cout << std::flush
,std::cin.ignore()
,std::cin.clear()
),但此时我已经没有想法了。这真的很奇怪;如果我取出SSL调用,那么读取循环运行正常并正确处理输入。据我所知,SSL调用对stdin或stdout没有任何影响。
我可以尝试任何建议或替代方法吗?