BOOST中read_some和 boost::asio::error::eof错误
Posted 大侠不好当
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BOOST中read_some和 boost::asio::error::eof错误相关的知识,希望对你有一定的参考价值。
当socket读写完成调用回调函数时候一定要检查 是不是有EOF错误,如果有那么好了,另一方已经断开连接了别无选择,你也断开把。
for (;;) { boost::array < char, 128 > buf; boost::system::error_code error; size_t len = socket.read_some(boost::asio::buffer(buf), boost::asio::assign_error(error)); //当服务器关闭连接时,boost::asio::ip::tcp::socket::read_some()会用boost::asio::error::eof标志完成, 这时我们应该退出读取循环了. if (error == boost::asio::error::eof) break; // Connection closed cleanly by peer. else if (error) throw error; // Some other error. std::cout.write(buf.data(), len); } //如果发生了什么异常我们同样会抛出它
原文 http://blog.chinaunix.net/uid-22273897-id-393662.html
以上是关于BOOST中read_some和 boost::asio::error::eof错误的主要内容,如果未能解决你的问题,请参考以下文章
传递给 boost::asio::async_read_some 的回调从未在 boost::asio::read_some 返回数据的使用中调用
为啥这个简单的 Boost::asio 程序不能按预期工作?