使用Boost.Asio只读取所需的字节数

时间:2013-03-14 17:33:51

标签: c++ sockets boost boost-asio

我只是创建一个非常简单的C ++类,它为我提供了一些方法,比如connect()read(),而不是暴露所有Boost.Asio套接字调用。

现在,我正在尝试找出如何创建一个只读取所需字节数的方法:

SocketClient::read(int bytes, char* data); //reads desired amount of bytes and puts them in data, size of data>bytes!

不幸的是,我在Boost.Asio中找不到read_byte函数。我不想丢弃已收到但尚未读取的字节。

Here is my class.

1 个答案:

答案 0 :(得分:7)

read函数似乎可以提供您所需的内容:

  

此函数用于从a读取一定数量的字节数据   流。呼叫将阻塞,直到满足以下条件之一   真:

- The supplied buffers are full. That is, the bytes transferred
  is equal to the sum of the buffer sizes.
- An error occurred.

使用示例:

boost::asio::read(stream, boost::asio::buffer(data, size));