File Channel liest / fügt falsche Daten hinzu

Ich verwende einen Dateikanal mit einem Byte-Puffer, um Pakete über das Netzwerk zu senden. Mein Problem ist, dass, wenn der Dateikanal die letzten paar Bytes liest, er das letzte gelesene Datenbit der vorherigen Bytes anhängt, obwohl ich den Byte-Puffer lösche, nachdem ich geschrieben habe.

Beispielsweise

Byte Puffergröße = 512 Bei der letzten Iteration sind die verbleibenden zu sendenden Bytes 372. Es werden die letzten 372 gelesen, aber es werden weitere 140 Bytes (512-372) an das Ende angehängt, und es wird angezeigt, dass die letzten 140 Bytes von stammen die vorherigen 512 Bytes gesendet.

Hier ist mein Code:

ByteBuffer bBuffer = ByteBuffer.allocate(512);

while (fChannel.read(bBuffer) > 0) {

    bBuffer.flip();
    datagramChannel.write(bBuffer);
    bBuffer.clear();

    //omitted code
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage