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

标签 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 .

最佳答案

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/

相关文章:

C# 字节处理

c# - 将 String[] 转换为 byte[] 数组

python - 为什么 Python 和 wc 在字节数上不一致?

c++ - 帮忙解决这个问题吗?

c++ - 何时删除 try-catch block 中的指针

c++ - boost asio doc中教程的奇怪输出

c - 递归获取目录的大小 - C

c++ - NtSetInformationThread 使用安全吗?

iOS swift : UIWebView has extremely big content

c++ - 如何在响应式 QVBoxLayout 中获取 QWidget 的当前宽度?