读书人

ASIO的异步读取async_read_some 和 as

发布时间: 2012-06-28 15:20:04 作者: rapoo

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()规定了接收的长度,只会接收规定长度的数据,我也不知道上午测试怎么会把后面的数据一起读取了。 谁有时间也测试下。


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

读书人网 >C++

热点推荐