SSL函数调用后std :: getline失败

时间:2015-05-29 18:12:30

标签: c++ ssl cin getline

在调用某些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::flushstd::cin.ignore()std::cin.clear()),但此时我已经没有想法了。这真的很奇怪;如果我取出SSL调用,那么读取循环运行正常并正确处理输入。据我所知,SSL调用对stdin或stdout没有任何影响。

我可以尝试任何建议或替代方法吗?

0 个答案:

没有答案