C ++:BOOST-ASIO async_read_some不返回包字节数?

时间:2013-04-05 08:19:04

标签: c++ size byte boost-asio packet

我尝试使用以下代码来读取套接字中的可用字节数(在服务器端),变量packet_bytes不执行任何操作。我期待数据包使用的字节数被读入packet_bytes,但这似乎不起作用。

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

1 个答案:

答案 0 :(得分: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中的示例。