In meiner App sende ich eine Datei von einem Client, mit Sockets. Auf der anderen Seite erhält ein anderer Client die Datei mit InputStream und dann bufferedOutputStream speichert die Datei im System.InputStream.read() hängt beim Lesen einer Datei
Ich weiß nicht warum, die Datei ist nicht vollständig übertragen. Ich denke, das ist wegen Netzwerküberlastung, ich weiß sowieso nicht, wie ich es lösen soll.
Transmiter ist:
Log.d(TAG,"Reading...");
bufferedInputStream.read(byteArrayFile, 0, byteArrayFile.length);
Log.d(TAG, "Sending...");
bufferedOutputStream.write(byteArrayFile,0,byteArrayFile.length);
bufferedOutputStream.flush();
Receiver ist:
bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(file));
byteArray=new byte[fileSize];
int currentOffset = 0;
bytesReaded = bufferedInputStream.read(byteArray,0,byteArray.length);
currentOffset=bytesReaded;
do {
bytesReaded = bufferedInputStream.read(byteArray, currentOffset, (byteArray.length-currentOffset));
if(bytesReaded >= 0){ currentOffset += bytesLeidos;
}
} while(bytesReaded > -1 && currentOffset!=fileSize);
bufferedOutputStream.write(byteArray,0,currentOffset);
versuchen, den Wert von bytesReaded zu protokollieren und zu sehen, wie es geht – AdamSkywalker
In der Regel empfiehlt es sich, mit Ihrem Debugger schrittweise zu gehen und Variablenwerte zu überprüfen. –
Ich habe es schon einmal gemacht. Wenn die Datei z. B. 10000 Byte enthält, bleibt sie hängen, wenn sie 9000 Byte empfangen hat. –