Java Socket: Objekte, Datei und dann wieder Objekte Übertragen

undertaker

Mitglied
Hallo! Habe folgendes Problem
Will mit Java über SSLSocket zuerst Objekte mit Steuerinformationen (String etc), dann eine oder mehrere Dateien und dann noch einige Objekte Übertragen.

Habe aber folgendes Problem:
Ich sende die Startinformationen mit einem ObjectOutputStream.
Dann sende Ich die Datei mit einem DataOutputStream.
Beide verwendet aber den Selben OutputStream vom Socket.

Das Problem habe ich nun am Server:
Ich les die Datei so ein :
Code:
                byte[] bytes = new byte[1024];
                int b = di.read(bytes);
                while (b!=-1){
                    fos.write(bytes,0,b); //In datei schreiben
                    b = di.read(bytes); 
                }

Wenn aber der DataOutputStream im Client nicht beendet wird, dann wartet der di.read(bytes) so lange, bis noch etwas nachkommt.
Schliße ich den DataOutputStream im Client, schließe ich gleichzeitig den Socket und kann somit keine weiteren Daten in dieser "Session" mehr senden.
Kennt jemand eine Lösung bzw. kann es sein das ich das Problem am falschen Ort sehe?
mfg trauter
 
Also ich würde es so machen:

<someData>
<startFile>
<fileData>
<endFile>
<someData>

Sprich eine Markierung senden wo eine Datei beginnt und wo sie endet. Du musst dann ein empfangenes byte array entsprechend auswerten um die Markierung zu erkennen. Dann weisst du wo deine Datei anfängt und wo sie endet.
 
Zurück