So empfange ich Daten über einen Socket mit einem Puffer (Byte []) der Größe 1024, und ich möchte die Lesevorgänge zusammen zu bilden, um das gesamte Paket für den Fall, dass sie größer als 1024 Bytes sind. Ich wählte eine Liste das gesamte Paket zu speichern, und das, was ich tun möchte, ist jeden Puffer, um es zu lesen hinzufügen, wie es kommt Ich will machen würde.Wie kann ich Byte [] Puffer in eine Liste <byte> einfügen?
List.AddRange(Buffer);
Aber in dem Fall, dass der Puffer isn Wenn ein leeres Byte voll ist, wird es bis zum Ende gepolstert. Natürlich möchte ich nur einen bestimmten Bereich von Bytes zur Liste hinzufügen, aber es gibt keine solche Methode. Ich könnte immer ein temporäres Byte-Array von genau der Anzahl von Bytes erstellen, die empfangen wurden, und dann AddRange() verwenden und das gewünschte Ergebnis erhalten, aber es erscheint mir nur dumm. Ganz zu schweigen davon, dass es bei jedem Lesen von Daten ein Array wegwerfen würde, was für die Leistung auf einem skalierbaren Mehrbenutzer-Server nicht gut wäre.
Gibt es eine Möglichkeit, dies mit einer Liste zu tun? Oder gibt es eine andere Datenstruktur, die ich verwenden kann?
Ich möchte sie nicht in ein neues Array kopieren, das ist, was ich versuche zu vermeiden. – ryeguy
Verwenden Sie dann Take, wenn Sie 3.5 zur Verfügung haben, indem Sie die genaue Größe der empfangenen Bytes kopieren, wie es Joel vorgeschlagen hat. –