InputStream - Bytes gehen verloren?

Status
Nicht offen für weitere Antworten.

milanwb

Aktives Mitglied
Hallo danke im Vorraus für eure Hilfe!

Ich habe folgendes Problem mit meiner Client-Server Anwendung:

Der Server soll dem Client Dateien zusenden. Dies geschieht bei größeren Dateien fast vollständig, doch beim Client kommen immer etwa 1-2 Kbyte weniger an. Die Folge ist dann, dass die Datei beschädigt ist...
Versucht man Dateien mit einer größe von ein paar Kbyte zu versenden, dann funktioniert nur der Sendevorgang, der Client erhält nichts!

Hier mal ein Codeschnipsel der Sende/Empfangsfunktion:


Der Server:

Code:
File fl = new File( daten.get(Integer.parseInt(dateiname)).toString()   );  //Dateiname wird von einer anderen Funktion übergeben (Datei wird auch vollständig gelesen)
             

             
             FileInputStream file = new FileInputStream(daten.get(Integer.parseInt(dateiname)).toString() );
             
             BufferedOutputStream out = new BufferedOutputStream(client.getOutputStream());
             
             byte[] buffer = new byte[1024];
            
             while (file.read(buffer) != -1) {
                 out.write(buffer);              
                 
             }

             out.close();
             file.close();
             client.close();  // Die Socketverbindung


Und der Client:

Code:
byte[] buffer = new byte[1024]  ;
          int n;

          while ( (n = fileIn.read(buffer)) != -1) {
            
              
            fileStream.write(buffer,0,n);
            count++;
                        
          }

          fileStream.close();
          fileIn.close();
          sock.close();

Ich probiere nun schon den ganzen Abend den Fehler zu finden, doch vergebens! Hoffe ihr könnt mir weiter helfen!

Danke im Vorraus

Micha
 
B

Beni

Gast
Wieso lesen die Leute eigentlich nie in der API nach, was write und read genau machen? Dass der Buffer nicht vollständig gelesen oder gefüllt wird, steht da ziemlich klar... (und dass der Rückgabewert was mit der Anzahl gelesener/geschriebener bytes zu tun hat, auch). :?
 

milanwb

Aktives Mitglied
Das war mir dann nachher auch klar.. Aber wie kann man denn die Bytes vollständig laden? Funktioniert dabei dann die andere read methode?
Also read(buffer,int off, int len)? Aber gäbs dann nicht ein Problem, wenn der Buffer nur 1000 bytes hat und nicht die vollständigen Bytes?

Kannst du mir bitte mal einen Verbesserungsvorschlag bzw die Apistelle angeben, in der steht wie genau man die Funktion dann anwenden muss, weil irgendwie weiß ich nicht wie ich die Funktion dann anwenden soll....
 

meez

Top Contributor
Mach den Server halt gleich wie den Client write(buffer,0 ,n) ... dann wirds laufen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
S Socket String InputStream in hex umwandeln Netzwerkprogrammierung 1
D GZIP InputStream lesen ohne zu encoden Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
windl InputStream cachen Netzwerkprogrammierung 3
K Socket InputStream wird nicht erzeugt Netzwerkprogrammierung 4
M Socket InputStream liest nicht vollständig Netzwerkprogrammierung 7
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
K Byte für Byte aus InputStream lesen Netzwerkprogrammierung 5
F JSch - inputstream is closed Netzwerkprogrammierung 13
M Socket InputStream sendet ausgaben von OutputStream zurück Netzwerkprogrammierung 2
D Inputstream to Outputstream Netzwerkprogrammierung 3
M InputStream and ObjectInputStream zur gleichen Zeit Netzwerkprogrammierung 11
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
MQue Inputstream Timeout Netzwerkprogrammierung 2
S Servlet InputStream leer?! Netzwerkprogrammierung 14
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
P Inputstream "verfügbar" Netzwerkprogrammierung 4
G JPG im InputStream Netzwerkprogrammierung 2
A InputStream liest immer komplettes PHP-Script Netzwerkprogrammierung 6
A InputStream ließt nur 65536 Zeichen anstatt ganzer Puffer Netzwerkprogrammierung 8
A inputstream teilen? Netzwerkprogrammierung 4
D InputStream (Socket) mit BufferedInputStream puffern Netzwerkprogrammierung 2
M Sockets und InputStream Netzwerkprogrammierung 8
R Client nimmt den Inputstream nicht an Netzwerkprogrammierung 5
S Mail anhang in InputStream packen Netzwerkprogrammierung 5
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
G inputstream hat plötzlich weniger inhalt Netzwerkprogrammierung 8
Z ProgressBar auf BufferedOutput- & -InputStream Netzwerkprogrammierung 2
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
L Socket KryoNet - Incorrect Number of Bytes Netzwerkprogrammierung 2
F Bytes in Int ? (SpyKee) Netzwerkprogrammierung 9
H Verlorene Bytes mit newIO Netzwerkprogrammierung 4
M Bytes aus Stream lesen Netzwerkprogrammierung 3
D URL getContentLength() liefert zu wenig bytes Netzwerkprogrammierung 7
R Bytes als Rohdaten über Socket senden Netzwerkprogrammierung 3
M Fehlende Bits / Bytes beim kopieren Netzwerkprogrammierung 4
G Bytes versenden Netzwerkprogrammierung 9
M Vom Server per Socket Empfangen, aber wieviel Bytes? Netzwerkprogrammierung 11
T Problem mit Bytes Netzwerkprogrammierung 3
clemson Bereits geladene Bytes Netzwerkprogrammierung 5
M Umlaute gehen bei URL Connection verloren Netzwerkprogrammierung 6

Ähnliche Java Themen


Oben