我尝试使用以下代码来读取套接字中的可用字节数(在服务器端),变量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。
答案 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中的示例。