Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 262
#1

Удалить не полностью переданый файл через socket - Android

06.08.2016, 02:39. Просмотров 168. Ответов 3
Метки нет (Все метки)

Допустим вовремя загрузки файла упало соединение и файл закачался не полностью.
Как отследить что файл передался не полностью?

Код для приема файла:
Java
1
2
3
4
5
6
7
8
9
10
11
12
   long size = is.readLong(); //размер файла
            long bytesRemaining = size;
            byte[] buffer = new byte[clientSocket.getReceiveBufferSize()];
            int bytesRead = 0;
            while (bytesRemaining > 0 && (bytesRead = is.read(buffer, 0, (int) Math.min(buffer.length, bytesRemaining))) >= 0) {
                fos.write(buffer, 0, bytesRead);
                bytesRemaining -= bytesRead;
            }
            
            fos.close();
 
            System.out.println("Download "+ line);
накидал что то типа
Java
1
2
                if(clientSocket.isClosed()){
                    if(directory.length() != size){directory.delete();}
но явно ерунда выйдет.
Подскажите пожалуйста как отработать потерю связи правильно.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2016, 02:39     Удалить не полностью переданый файл через socket
Посмотрите здесь:

Android Socket
Подключение через Socket Android
Android Socket AndroiD
Удалить файл базы с SD карты при удалении приложения Android
Создание экрана программно и через xml файл Android
Socket Android Client and Java Socket Server Android
Android Как полностью удалить студию (убунту)?
Android Удалить файл
Android Socket server over 3g
Android Не создается Socket
Передать файл через socket или через ftp api Android
Не подключается к серверу через Socket Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3024 / 1826 / 191
Регистрация: 13.01.2012
Сообщений: 6,929
06.08.2016, 18:33     Удалить не полностью переданый файл через socket #2
powowstal, укажите какой протокол. если ваш собственный - передавайте в начале размер. если HTTP используйте content-length. если пришло данных меньше чем должно - удаляйте
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 262
09.08.2016, 21:14  [ТС]     Удалить не полностью переданый файл через socket #3
vxg,
Цитата Сообщение от vxg Посмотреть сообщение
укажите какой протокол
-свой собственный.


выходит если произошла потеря связи цикл:
Цитата Сообщение от powowstal Посмотреть сообщение
Java
1
2
3
4
while (bytesRemaining > 0 && (bytesRead = is.read(buffer, 0, (int) Math.min(buffer.length, bytesRemaining))) >= 0) {
fos.write(buffer, 0, bytesRead);
bytesRemaining -= bytesRead;
}
завершается сам и мы проверяем к-во полученных байт:
Цитата Сообщение от powowstal Посмотреть сообщение
if(directory.length() < size){directory.delete();}
Я правильно все понял?
vxg
Модератор
3024 / 1826 / 191
Регистрация: 13.01.2012
Сообщений: 6,929
10.08.2016, 06:28     Удалить не полностью переданый файл через socket #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
powowstal, да правда я не знаю что у вас за directory - вполне достаточно было бы проверить число которое лежит в bytesRemaining
Yandex
Объявления
10.08.2016, 06:28     Удалить не полностью переданый файл через socket
Ответ Создать тему
Опции темы

Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru