В моем приложении я отправляю файл с клиента, используя сокеты. С другой стороны, другой клиент получает файл, используя InputStream, а затем bufferedOutputStream сохраняет файл в системе.InputStream.read() зависает при чтении файла
Я не знаю, почему файл не передан полностью. Я думаю, что это из-за перегрузки сети, во всяком случае, я не знаю, как ее решить.
TRANSMITER является:
Log.d(TAG,"Reading...");
bufferedInputStream.read(byteArrayFile, 0, byteArrayFile.length);
Log.d(TAG, "Sending...");
bufferedOutputStream.write(byteArrayFile,0,byteArrayFile.length);
bufferedOutputStream.flush();
Приемник:
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);
попытайтесь зарегистрировать значение bytesReaded и посмотреть, как это будет. – AdamSkywalker
Как правило, рекомендуется переходить к вашему отладчику и проверять значения переменных. –
Я сделал это раньше. Например, если файл имеет 10000 байт, он застревает, когда он получил 9000 байт. –