今天用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读取到数据或出错就返回,不一定读完了整个包。

相关文章:

  • 2021-05-02
  • 2021-12-10
  • 2022-12-23
  • 2021-05-21
  • 2022-02-10
  • 2022-02-09
  • 2022-12-23
  • 2022-01-07
猜你喜欢
  • 2022-12-23
  • 2021-11-30
  • 2022-01-20
  • 2022-02-07
  • 2021-10-11
  • 2022-12-23
相关资源
相似解决方案