Ghost_Rider_R
Lieutenant
- Registriert
- Nov. 2009
- Beiträge
- 786
Hallo zusammen,
mich beschäftigt aktuell, wie man in C# beim Übertragen von mehrere Objekte / Byte-Arrays (via Sockets) die Daten beim Empfangen wieder separiert bekommt.
Z.B.:
Client:
socket.Send(daten1);
socket.Send(daten2);
socket.Send(daten3);
Server:
byte[] großesDatenpaket = socket.ReceiveAll();
So wie ich das mitbekommen habe, obliegt das dem Programmierer, da kein End Of File Kennzeichen existiert.
Als Ideenansätze habe ich folgendes:
1. Die ersten 4 Bytes enthalten die Anzahl der Bytes der jeweiligen Daten.
2. Man baut selber EOF-Bytes ein z.B. 10101011. Sollte diese Sequenz innerhalb des Bytearrays bereits existieren, so muss dieses dequotet werden -> 10101011 wird ersetzt durch 1010101110101011 (analog zu ,,\\" in Zeichenketten). Am Ende muss das doppelt hinzugefügte Byte natürlich wieder entfernt werden, damit die Daten unverändert bleiben.
Wie würdet Ihr das Problem lösen, damit die Daten sauber getrennt werden können?
Danke für eure Ideen
LG Ghost
mich beschäftigt aktuell, wie man in C# beim Übertragen von mehrere Objekte / Byte-Arrays (via Sockets) die Daten beim Empfangen wieder separiert bekommt.
Z.B.:
Client:
socket.Send(daten1);
socket.Send(daten2);
socket.Send(daten3);
Server:
byte[] großesDatenpaket = socket.ReceiveAll();
So wie ich das mitbekommen habe, obliegt das dem Programmierer, da kein End Of File Kennzeichen existiert.
Als Ideenansätze habe ich folgendes:
1. Die ersten 4 Bytes enthalten die Anzahl der Bytes der jeweiligen Daten.
2. Man baut selber EOF-Bytes ein z.B. 10101011. Sollte diese Sequenz innerhalb des Bytearrays bereits existieren, so muss dieses dequotet werden -> 10101011 wird ersetzt durch 1010101110101011 (analog zu ,,\\" in Zeichenketten). Am Ende muss das doppelt hinzugefügte Byte natürlich wieder entfernt werden, damit die Daten unverändert bleiben.
Wie würdet Ihr das Problem lösen, damit die Daten sauber getrennt werden können?
Danke für eure Ideen
LG Ghost