首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ASIO的异步读取async_read_some 和 async_read 的区别与使用,如何知道读取了多少数据

2012-06-28 
ASIO的异步读取async_read_some 和 async_read 的区别与使用,怎么知道读取了多少数据?tcp::socket . async

ASIO的异步读取async_read_some 和 async_read 的区别与使用,怎么知道读取了多少数据?
tcp::socket . async_read_some() :只要读到数据 和读错误就会返回。 但读到多少数据在哪能够知道?

boost::asio::async_read(m_socket,boost::asio::buffer(data,g_iNeedRecvLen),
boost::bind(&ClientSession::handle_read,shared_from_this(),boost::asio::placeholders::error));
  要读满iNeedRecvLen个数据才返回(或读错误),但又不一定只读取到iNeedRecvLen个数据。这样本我只想接收个包头的,却包数据有一部分数据也跟着过来了。就不好处理了。 还是同样一个问题:怎么知道真正读取了多少个数据?

[解决办法]
另外async_read()规定了接收的长度,只会接收规定长度的数据,我也不知道上午测试怎么会把后面的数据一起读取了。 谁有时间也测试下。


---------------------------
看看返回的时候的错误代码!有错误时也返回

热点排行