我尝试使用以下代码读取套接字中的可用字节数(在服务器端),变量 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 .
最佳答案
bind
调用中的 packet_bytes
参数也应该是一个占位符:
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 中的示例.
关于C++:BOOST-ASIO async_read_some 不返回数据包字节数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829061/