M
mainfield
Gast
Hallo,
ich habe eine grundlegende Frage zu Sockets (TCP) bzw. Streams. Ich möchte nachdem ich die Verbindung aufgebaut habe, Bytes übertragen (Inhalt einer Datei und zusätzliche Daten). Daher verwende ich BufferedInputStream und BufferedOutputStream. Die zu übertragenden Daten möchte ich in einzelne Pakete/Datensätze aufteilen (für jede Datei ein Datensatz).
Wenn ich die einzelnen Pakete in einem Programm einfach nacheinander in den OutputStream schreibe (Client), kommen sie aber im anderen Programm (Server) "am Stück" an. Mein Problem ist jetzt, die Daten aus dem InputStream wieder in die einzelnen Pakete zu zerlegen.
Meine erste Idee war, beim Senden nach jedem Paket ein Trennzeichen zu senden. Beim Empfangen wird dann einfach nach diesem gesucht und die Daten entsprechend aufgeteilt. Das Problem ist aber, dass die Nutzdaten, also die Daten innerhalb des Datenpakets u.U. auch das Trennzeichen enthalten. Dann würde ein eigentlich zusammenhängendes Pakte fälschlicherweise in zwei oder mehr aufgeteilt.
Die andere Idee wäre, beim Senden vor jedes Paket die Größe des Pakets, also die Anzahl der Bytes aus denen es besteht, zu schreiben. Wenn dann aber einmal die angegebene Anzahl an Bytes nicht mit der tatsächlichen Anzahl übereinstimmen sollte (z.B. wegen Berechnungsfehler), kommt das ganze Programm aus dem Tritt und es wird an der falschen Stelle nach der Größe des Paketes gesucht.
Gibt es eine einfache Lösung, wie ich einzelne Datensätze in einem InputStream zusammensetzen und danach wieder zuverlässig trennen kann?
Vielen Dank!
ich habe eine grundlegende Frage zu Sockets (TCP) bzw. Streams. Ich möchte nachdem ich die Verbindung aufgebaut habe, Bytes übertragen (Inhalt einer Datei und zusätzliche Daten). Daher verwende ich BufferedInputStream und BufferedOutputStream. Die zu übertragenden Daten möchte ich in einzelne Pakete/Datensätze aufteilen (für jede Datei ein Datensatz).
Wenn ich die einzelnen Pakete in einem Programm einfach nacheinander in den OutputStream schreibe (Client), kommen sie aber im anderen Programm (Server) "am Stück" an. Mein Problem ist jetzt, die Daten aus dem InputStream wieder in die einzelnen Pakete zu zerlegen.
Meine erste Idee war, beim Senden nach jedem Paket ein Trennzeichen zu senden. Beim Empfangen wird dann einfach nach diesem gesucht und die Daten entsprechend aufgeteilt. Das Problem ist aber, dass die Nutzdaten, also die Daten innerhalb des Datenpakets u.U. auch das Trennzeichen enthalten. Dann würde ein eigentlich zusammenhängendes Pakte fälschlicherweise in zwei oder mehr aufgeteilt.
Die andere Idee wäre, beim Senden vor jedes Paket die Größe des Pakets, also die Anzahl der Bytes aus denen es besteht, zu schreiben. Wenn dann aber einmal die angegebene Anzahl an Bytes nicht mit der tatsächlichen Anzahl übereinstimmen sollte (z.B. wegen Berechnungsfehler), kommt das ganze Programm aus dem Tritt und es wird an der falschen Stelle nach der Größe des Paketes gesucht.
Gibt es eine einfache Lösung, wie ich einzelne Datensätze in einem InputStream zusammensetzen und danach wieder zuverlässig trennen kann?
Vielen Dank!