Ich möchte eine Zeichenfolge aus einem TCP-Stream lesen, die mit einer Byte-Länge gefolgt von den tatsächlichen Daten angegeben wird. In Python würde ich tunJava NIO: Blöcke variabler Größe lesen
length = ord(stream.read(1))
data = stream.read(length)
Wie mache ich das gleiche in Java NIO? Was ich habe, ist ein Puffer (Kapazität 257)
stream.read(buffer); // cannot specify a size here
int length = buffer.get();
byte[] data = new byte[length];
buffer.get(data);
Leider ist dies nicht funktioniert: die get() Anrufe lesen Vergangenheit die Daten im Puffer :-(
ich wahrscheinlich brauchen einige Kombination von Flip, Zurückspulen, Reset, etc., aber ich kann es nicht herausfinden ..
Was für eine Art von Objekt ist 'Stream' in Ihrem Java-Beispiel? – Bkkbrad
Es ist ein SocketChannel. –