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

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

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

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

06.08.2016, 02:39. Просмотров 189. Ответов 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
Посмотрите здесь:
Передать файл через socket или через ftp api Android
Android Как полностью удалить студию (убунту)?
Подключение через Socket Android
Android Сеть через Socket
Не подключается к серверу через Socket Android
Socket Android Client and Java Socket Server Android
Android Удалить файл
Удалить файл базы с SD карты при удалении приложения Android
Создание экрана программно и через xml файл Android
Android Socket
Android Socket server over 3g
Android Socket AndroiD

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3107 / 1909 / 205
Регистрация: 13.01.2012
Сообщений: 7,278
06.08.2016, 18:33     Удалить не полностью переданый файл через socket #2
powowstal, укажите какой протокол. если ваш собственный - передавайте в начале размер. если HTTP используйте content-length. если пришло данных меньше чем должно - удаляйте
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 293
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
Модератор
3107 / 1909 / 205
Регистрация: 13.01.2012
Сообщений: 7,278
10.08.2016, 06:28     Удалить не полностью переданый файл через socket #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
powowstal, да правда я не знаю что у вас за directory - вполне достаточно было бы проверить число которое лежит в bytesRemaining
Yandex
Объявления
10.08.2016, 06:28     Удалить не полностью переданый файл через socket
Ответ Создать тему
Опции темы

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