1

すべての Boost.Asio ソケット呼び出しを公開する代わりに、connect()やなどのいくつかのメソッドを提供する非常に単純な C++ クラスを作成しているだけです。read()

現在、必要なバイト数だけを読み取るメソッドを作成する方法を見つけようとしています。

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

残念ながら、read_byteBoost.Asio には関数が見つかりませんでした。受信したがまだ読み取られていないバイトを削除したくありません。

これが私のクラスです。

4

1 に答える 1

7

read関数は、必要なものを正確に提供しているようです。

この関数は、ストリームから特定のバイト数のデータを読み取るために使用されます。次の条件のいずれかが true になるまで、呼び出しはブロックされます。

- 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));
于 2013-03-14T18:53:12.193 に答える