zoukankan      html  css  js  c++  java
  • 当asio::async_read与socket的async_read_some的区别

    今天用asio写一个简单的server时,
    当连接成功时做如下工作

    1        asio::async_read(socket_, asio::buffer(&m_packet, sizeof(m_packet)),
    2          boost::bind(&tcp_connection::HandleReadCardKey, shared_from_this(),
    3            asio::placeholders::error));

    但HandleReadCardKey始终没有被回调,除非remote point断开连接

    最后用下面的代码搞定:

    1 socket_.async_read_some(asio::buffer(&m_packet, sizeof(m_packet)),
    2           boost::bind(&tcp_connection::HandleReadCardKey, shared_from_this(),
    3           asio::placeholders::error));

    记下,免得以后忘记了

    总结一下:
          asio::async_read通常用户读取指定长度的数据,读完或出错才返回。
          而socket的async_read_some读取到数据或出错就返回,不一定读完了整个包。

  • 相关阅读:
    12.精益敏捷项目管理——产品协调小组笔记
    打字游戏
    提升权限
    下载者
    SMTP实现发送邮箱2(封装版)
    SMTP实现发送邮箱1
    电子邮件协议详解
    JSON运用在文件
    JSON函数表2
    JSON函数表1
  • 原文地址:https://www.cnblogs.com/lzjsky/p/2172501.html
Copyright © 2011-2022 走看看