web-dev-qa-db-ja.com

ByteBufferのバイト数を決定する

最大(4 + ByteBuffersize(つまり、整数の後にbytes文字が続く)を保持できるsizeがあります。ただし、ByteBufferに書き込まれる文字数は、sizeよりも小さい場合があります。

と思っていたのですが、ByteBufferに書き込まれた文字の合計サイズだけでなく、いくつの文字が特定されたのでしょうか。 limitpositionなどは、私が求めているものであるとSEEMで判断しません。

ご協力いただきありがとうございます!

20
user2268507

ByteBufferに書き込んだ後、書き込んだバイト数はposition()メソッドで確認できます。

その後、バッファをflip()した場合、limit()またはremaining()メソッドを使用して、バッファ内のバイト数を見つけることができます。

その後、バッファーの一部を読み取る場合、残りのバイト数はremaining()メソッドで確認できます。

23
Andy Thomas
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();
2
Lord Moon