마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

retrieveFileStream() 이셉션발생시..질문입니다

0 추천
웹하드에있는 영화파일을 다운로드시켜주는 앱을 진행중에있습니다

 

아무튼 내용은 이러합니다

 

현재 스레드하나에서 다운을 받고자하는 영화파일들을 리스트로관리하고있씁니다

리스트에는 예를들어 광해->내가살인범이다->야동

 

뭐 이렇게 3개가 리스트에있고

스레드가 돌면서 리스트순서대로..다운로드합니다

 

commons .net api 사용하고 FTPClient 를 이용하고있는데

문제가 있습니다...

 

정상적으로 다운로드되다가..갑자기 retrieveFileStream() 이셉션에 걸려버립니다

내용을 보니 파이프가 끊어졌다고 나오는데...문제는 1기가정도되는 영화를 80%가량 다운받은상태에서 끊겨버리면...

처음부터 다시 받게 되서 사용자로하여 데이터이용료가 많이 발생한다는것입니다

 

이어받기를 하고싶은데...현재 시스템이 스레드 하나에서 여러개의 영화를 리스트로 관리하면서 다운받다보니...

아무튼 이어받기가 쉽지가않습니다.

 

리스트안에 영화가 딸랑 한개여도 80% 다운이 진행된상태에서 연결이 끊어져버리면 제시도하여 이어받기를 하고싶은데..

 

지금 제 상황에는 절대 불가능할까요? 부탁드립니다..

 

멀티스레드로 바꾸려한다면 손이 지금 엄청 많이가게되서 ㅠㅜ
슈퍼악마 (120 포인트) 님이 2013년 2월 21일 질문

1개의 답변

0 추천
파일 전송하는 모듈을 분리하여 이렇게 구현해보세요

서버, 클라이언트 모두에서 작업해야합니다.

 

1. 서버에서 파일을 일정 크기로 인덱싱하고, 파일의 크기등을 기재하여 메타데이터 생성합니다.

2. 메타데이터를 주고받습니다.

3. 클라이언트에서 받을 크기만큼의 파일을 생성합니다.

4. 구획별로 다운받아 생성한파일에 해당구획에 덮어씁니다.

5. 전송이 모두 완료되면 해시코드를 비교하여 무결성을 확인합니다.

스트리밍 서비스가 아니라면 이런식으로 구현하시면 좀 열악한 환경에서도 이어받기를 쉽게 구현 할 수 있습니다.
Noizbuster (11,970 포인트) 님이 2013년 2월 24일 답변
...