ネットワーク経由でパケットを送信するために、バイト バッファーを備えたファイル チャネルを使用しています。私の問題は、ファイルチャネルが最後の数バイトを読み取るときに、書き込み後にバイトバッファーをクリアしているにもかかわらず、読み取った前のバイトから最後のビットのデータを追加することです。
例えば、
Byte Buffer size = 512 最後の反復で、送信する残りのバイトは 372 です。最後の 372 を読み取りますが、その末尾に別の 140 バイト (512-372) を追加し、最後の 140 バイトが前の 512 バイトが送信されました。
私のコードは次のとおりです。
ByteBuffer bBuffer = ByteBuffer.allocate(512);
while (fChannel.read(bBuffer) > 0) {
bBuffer.flip();
datagramChannel.write(bBuffer);
bBuffer.clear();
//omitted code
}