2016-05-27 7 views
1

Ich habe eine Byte-Array von 256 (byte[256]) und ich habe einen Strom von Byte-Daten kommen in denen ich mit 256 Puffergröße auf meinem lesen Byte-Array.Verarbeitung von Nachrichten aus einem Byte [] Puffer, vor dem verbleibenden Puffer Bytes

Ich parse das Byte-Array und extrahiere 2 "Nachrichten" aus dem Byte-Array ... 13 Bytes im Array nicht verarbeitet lassen.

Frage Wie bekomme ich die 13 Bytes an die nächste 256 Byte-Array, die hereinkommt, damit ich die "Teilbytes" aus dem ersten Byte-Array mit dem zweiten Byte-Array auf die schnellste Weise verarbeiten kann?

Beispiel:

[256 Array] 
    [+++++++++++++++++++] (1st Buffer) 
    [**************] (Processed in the first iteration...) 
        [----] (Remaining from the 1st Buffer) 
        [----][++++++++++++++++++++](Old Buff + New Buff256[]) 
        [-----+++++++++++++++++++++] <---- (THIS) 
        (How do I get this Combination to process in the most 
        efficient manner so I am not missing messages that may 
        have been chopped off by my buffer size from the old buffer) 

Vielen Dank im Voraus Jungs.

+0

Willkommen! Irgendwelcher Code zum zu zeigen? Welche Forschung hast du gemacht? Dies wird uns helfen, Ihnen zu helfen. Viel Glück! – MickyD

+0

@Valmorgal Es sieht aus wie es eine Lösung gibt [hier] (http://stackoverflow.com/questions/8221136/fifo-queue-buffer-specialising-in-byte-streams) –

Antwort

2

Deklarieren Sie einen Puffer von 512 Bytes statt 256.

Wenn Sie bereit sind, weitere 256 Bytes zu erhalten, überprüfen Sie, wenn Sie irgendwelche Links-overs im Puffer haben. Wenn Sie dies tun, kopieren Sie sie an den Anfang des Puffers.

Dann erhalten Sie Ihre 256 Bytes, setzen sie nach den Resten.

Angenommen, Ihre Nachrichten sind jeweils kleiner als 256 Byte, sollten Sie den Puffer nicht überschreiben.

+0

@blogbeard Danke für die Antwort. Ich bin auf der Suche nach einer schnellen Implementierung, um genau das zu tun, was Sie sagen. Um die linken Bytes am Anfang des neuen Puffers zu setzen. – Valmorgal

+0

Nun, wie schnell brauchen Sie das? Warum ist das nicht schnell genug? – Blorgbeard