考虑此代码:加速ASIO和SSL及错误代码
const std::size_t rawBufferSize = 1024;
char rawBuffer[rawBufferSize] = { 0 };
boost::asio::ssl::stream<boost::asio::ip::tcp::socket>* sslStream;
... // initializing stuff
boost::system::error_code ec;
auto buffer = boost::asio::buffer(rawBuffer, rawBufferSize);
for(; ;)
{
int readBytes = sslStream->read_some(buffer, ec); // I know that read_some return std::size_t (unsigned int)...
// here, readBytes equals -1
if (ec)
break;
... (1)
}
这怎么可能“的ReadBytes”等于-1和行“(1)”为止。
我做错了什么线索?
readBytes = -1时,你的error_code变量是什么? – 2012-01-13 10:29:53
@TonyTheLion如果到达“(1)”这一行,我想“ec变量”等于零。 – Charstar 2012-01-13 10:39:53
read_some返回0 [出错](http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/reference/ssl__stream/read_some/overload2.html)不是-1。你能发表一个[简短的,自包含的,正确的例子](http://sscce.org/)展示这个问题吗? – 2012-01-14 16:32:27