免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3394 | 回复: 0
打印 上一主题 下一主题

boost asio的问题..... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-13 16:17 |只看该作者 |倒序浏览
一个对象对boost网络接口的封装有一个Close()接口
  1. boost::system::error_code ec;
  2. m_socket->cancel(ec);
  3. m_socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
  4. m_socket->close(ec);
  5. ......释放对象等操作
复制代码
觉大部分下都非常的正常, 有时候会有如下问题.....
当我调用上面代码后, 既然又收到异步消息, 说对方关闭连接,最终导致程序异常....
  1. void CTcpSession::__readData()
  2. {
  3.     if(m_socket != NULL)
  4.     {
  5.         memset(m_sData, 0, sizeof(m_sData));
  6.         m_socket->async_read_some(boost::asio::buffer(m_sData, M_MAXBUFFERSIZE),
  7.                 m_strand.wrap(boost::bind(&CTcpSession::__handle_read, this,
  8.                         boost::asio::placeholders::error,
  9.                         boost::asio::placeholders::bytes_transferred)));
  10.     }
  11. }
  12. void CTcpSession::__handle_read(const boost::system::error_code& err, size_t bytes_transferred)
  13. {
  14.     if(err)            //读数据错误
  15.     {
  16.         ErrorMsg("this = %p _handle_read is Error = %s value = %d", this, err.message().c_str(), err.value());
  17.         if(2 == err.value()                       //End of file, 收到对方关闭连接
  18.                 || 104 == err.value())            //Connection reset by peer
  19.         {
  20.             m_pStreamInte->onConnectFaild();
  21.         }
  22.     }
  23.     ...................
  24. }
复制代码
请问大家有越到这种情况吗...多谢...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP