因此,我开始使用的代码是可以工作的(下面有重要的注意事项)
int reply_length = boost::asio::read(*m_socketptr, boost::asio::buffer((char*)reply, 6));
这个方法是有效的,我可以获取到头部信息,然后解码并进行另一个读取操作,以获取我的消息。然后我会回到顶部并读取另一个头部信息。但是这样会使我的CPU占用率达到100%,因此我想用以下内容替换上面的头部读取操作:
m_socketptr->async_read_some(boost::asio::buffer(m_data, 6), boost::bind(&CSListener::handleRead, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
或者
boost::asio::async_read(*m_socketptr, boost::asio::buffer(m_data, 6), boost::bind(&CSListener::handleRead, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
无论我如何编码,handleRead方法都没有被调用。帮帮我吧!感激不尽!