码迷,mamicode.com
首页 > 其他好文 > 详细

BOOST中read_some和 boost::asio::error::eof(2)错误

时间:2016-05-27 23:20:51      阅读:2489      评论:0      收藏:0      [点我收藏+]

标签:

当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(2)错误

标签:

原文地址:http://www.cnblogs.com/lovelylife/p/5536229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!