Ich benutze flatbuffer, um Binärdaten über Unix-Socket zu senden. Der Flatbuffer, den ich sende, hat eine dynamische Länge. Das Problem, dem ich gegenüberstehe, ist, wie man weiß, wie viele Bytes ich für eine Tabelle lesen muss.Dynamic FlatBuffers Begrenzer
Gibt es so etwas wie ein Trennzeichen, das beim Senden angehängt werden kann, mit dem ich das Ende des Flatbuffers bestimmen kann.
Wenn ich mit einer kleineren Größe versuchte
buf := make([]byte, 512)
nr, err := c.Read(buf)
if err != nil {
fmt.Println("exit echo")
return
}
Und wenn die flatbuffer, die größer als 512 Bytes ist gelesen wird, dann führt dies zu einem Versagen.
Wenn ich durch meine wachsenden Puffer lesen, dann bin ich nicht in der Lage, das Ende des
lesenvar n, nr int
var err error
buf := make([]byte, 0, 4096) // big buffer
tmp := make([]byte, 512)
for {
n, err = c.Read(tmp)
if err != nil {
break
}
nr += n
if nr >= 4096 {
err = errOverrun
break
}
buf = append(buf, tmp[:n]...)
}
if err != nil {
fmt.Println("read error:", err)
break
}