java nio und ByteBuffer problem

Traf ich ein problem. Ich benutze nio socket zu empfangen, die Nachricht. Auf eine vollständige Nachricht empfangen wird, schicke ich den dataBuffer, das hält die empfangene Nachricht an einen anderen Benutzer. Aber es gibt Ausnahme Sie unten. Wo ist das problem? Ich versuche zu nennen, dataBuffer.duplicate() und schreiben Sie es auf. Aber auf der Empfängerseite, die read-operation wirft eine solche Ausnahme. Ich habe zum zuweisen eines neuen ByteBuffer und machen Sie eine neue Kopie von Nachricht und schreiben Sie es auf. In diesem Fall ist es kein Fehler. Aber ich will nicht die Kopie Schritt. Gibt es eine andere Möglichkeit es zu lösen?

Ausnahme geworfen

java.nio.BufferOverflowException
    at java.nio.HeapByteBuffer.put(Unknown Source)
    at java.nio.ByteBuffer.put(Unknown Source)
    at serviceHandlerPackage.ServiceHandler.readComplete(ServiceHandler.java:218)

Code

readEventHAndler(SocketChannel socket) {
   readCompleteData(socket);
}

readCompleteData(Socket) {
    ByteBuffer dataBuffer; //hold complete message
    if(!dataComplete)  return;
    else   process(dataBuffer);
}

process(dataBuffer) {
   ...

   processHandler();

   sendNext(dataBuffer);

}


sendNext(dataBuffer) {
    write(dataBuffer);

}
  • bitte geben Sie den relevanten code.
  • schlechte Titel der Frage... ich meine, es erklärt nicht dein problem. Sie bieten weniger code, als wir benötigen, um Ihnen zu helfen lösen Sie Ihr problem. zum Beispiel Ihre dataBuffer ist nie initialisiert...
InformationsquelleAutor susan | 2011-06-01
Schreibe einen Kommentar