안녕하세요. 낭만폭풍입니다.




인터넷에서 무언가 파일을 다운로드 하고 있습니다.

대충 RandomAccessFile를 사용한 이어받기 모듈을 구현했습니다.


근데 이게 그냥 일반적인 파일들은 이어받기가 잘 되고 사용도 잘 됩니다.

근데.... 동영상이라던지..... 음악파일이라던지 하는

뭐 하여튼 좀 민감한(?) 파일들은 좀 이상하게 전송이 되는 것 같습니다.


헤더 정보가 꼬이는지 재생이 안 되는 경우도 있었고, 재생이 되어도 영상의 일부가

손상되는 현상을 목격하였습니다.


프로토콜은 http이며, 브라우저에서 다운로드 테스트를 해 본 결과

파일 자체는 전혀 이상이 없었으며 같은 영상을 스트리밍으로 볼 경우에도 정상적으로 나왔습니다.


아래는 대략의 소스입니다.


		RandomAccessFile output = new RandomAccessFile(file.getAbsolutePath(),
				"rw");
		output.seek((fileSize = output.length()));


		HttpURLConnection conn = (HttpURLConnection) new URL(mUrl)
				.openConnection();
			conn.addRequestProperty("Range",
					"bytes=" + String.valueOf(fileSize) + '-');
		conn.connect();
		remains = conn.getContentLength();


		lenghtOfFile = remains + fileSize;


		if (remains <= 0) {
			output.close();
			conn.disconnect();
			return;
		}


		InputStream input = conn.getInputStream();


		if (fileSize < lenghtOfFile) {
			int readBytes = 0;
			byte data[] = new byte[1024];
			while ((readBytes = input.read(data)) != -1) {
				try {
					output.write(data, 0, readBytes);
				} catch (IOException e) {
					continue;
				}
			}
		}


초짜인 저로써는 도저히 알 방법이 없네요 ㅠㅠ

마켓에서 Downloader류의 어플을 사용하면 제대로 받아 지네요.

이런 어플들의 원리도 좀 알고 싶네요.



수고하세요.

안드로이드펍 irc에서 동네북을 맡고있는 퐁퐁입니다.
iOS/Android/Python/PHP
타의로 배운 기술은 잘 까먹습니다.. ㅠㅠ