2013-04-05 26 views
0

我试着用下面的代码来读取套接字(服务器端)的可用字节数,变量packet_bytes没有做任何事情。我期待数据包使用的字节数被读入packet_bytes,但这似乎不起作用。C++:BOOST-ASIO async_read_some不返回数据包字节数?

std::size_t packet_bytes = 0; 

socket_.async_read_some(boost::asio::buffer(data_, max_length), 
      boost::bind(&session::handle_read, this, 
      boost::asio::placeholders::error, 
      packet_bytes)); 

我也试过std::size_t packet_bytes = socket_.available();,那也没有返回任何东西。这是entire code

回答

3

packet_bytes参数在bind电话也应该是一个占位符:

socket_.async_read_some(boost::asio::buffer(data_, max_length), 
    boost::bind(&session::handle_read, this, 
       boost::asio::placeholders::error, 
       boost::asio::placeholders::bytes_transferred)); 

然后在你的处理函数这样的说法将被读取的字节数。

参见例如manual中的示例。

+0

是不是用于获取套接字中的字节的参数? – pandoragami 2013-04-05 08:24:58

+0

虽然我如何创建处理函数? – pandoragami 2013-04-05 08:27:10

+0

@lost_with_coding好的,重读你的问题之后,似乎你想知道_can_可以被读取的字节数,即接收缓冲区中的字节数,而不是你刚收到的字节数。那是对的吗? – 2013-04-05 08:27:57