2012-02-12 5 views
3

나는 간단한 다운로드 관리자에서 코코아로 글을 쓰고 있으며 실제로는 NSURLDownload을 사용하여 트릭을 수행합니다. 문제는 내가 NSURLDownload이 하나의 세그먼트에서만 파일을 다운로드하고 다른 다운로드 관리자가 다운로드 성능을 향상시키기 위해 여러 세그먼트의 파일을 다운로드한다는 것을 알고 있다는 것입니다.코코아 API를 사용하여 다운로드 속도를 높이는 방법

실제로 나는 여러 개의 세그먼트로 다운로드하고 동시에 모든 세그먼트를 다운로드해야하는 파일을 분할해야한다고 생각합니다.

문제는 내가 어떻게 해야할지 모르겠다는 것입니다. 나는 이미 인터넷에서 성공을 거두지 않고 많이 검색합니다.


편집 :

NSURL *downloadURL = [NSURL URLWithString:@"http://www.urltodownload.com"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:downloadURL cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 1000.0]; 
int fromByte = 0; 
int toByte = 1000; 
NSString *range = [NSString stringWithFormat:@"bytes=%i-%i", fromByte, toByte]; 
[request setValue:range forHTTPHeaderField:@"Range"]; 
[[NSURLDownload alloc] initWithRequest:request delegate:self]; 

답변

1

나는 이것에 대한 정확한 답을 알고하지 않습니다하지만 당신이 Java example에서 볼 경우, 당신이 추가 할 수 있습니다 볼 수 있습니다 : 다음 작업 솔루션 덕분에 nacho4d 도움이다 HttpConnection에 객체의 "범위"속성은 다운로드 부분을 선택합니다 :

// Specify what portion of file to download. 
connection.setRequestProperty("Range", 
     "bytes=" + downloaded + "-"); 

을 내가 그 힌트라고 생각하고 어쩌면 NSURLRequest 또는 NSURLConnection 등의 장소가 이 "범위"속성을 넣으십시오.

가정하면, n 개의 연결을 동시에 만들고 모든 연결이 완료되면 모든 것을 연결해야합니다. 당신이 정확한 답을 찾을 경우

나도 알고 기쁠 :

그것이 도움이되기를 바랍니다.

+0

도움 주셔서 감사합니다. 사실 NSMutableURLRequest 객체에서 범위를 지정할 수 있습니다. 다음은 작은 예제입니다 :'NSURL * downloadURL = [NSURL URLWithString : @ "http://www.urltodownload.com"]; NSMutableURLRequest * 요청 = [NSMutableURLRequest requestWithURL : downloadURL cachePolicy : NSURLRequestUseProtocolCachePolicy timeoutInterval : 1000.0]; int fromByte = 0; int toByte = 1000; NSString * range = [NSString stringWithFormat : @ "bytes = % i- % i", fromByte, toByte]; [요청 setValue : 범위에 대한 HTTPHeaderField : @ "범위"]; [[NSURLDownload alloc] initWithRequest : 델리게이트 : self]; ' –

+1

이제 작동 중입니다. 고맙습니다. 다른 질문이 있습니다. 동일한 시간에 n 개의 스레드로 파일을 작성하는 가장 좋은 방법은 무엇이라고 생각합니까? –

+1

여기에 몇 가지 옵션이 있습니다. 가장 간단한 방법은 for 루프를 사용하여 모든 NSURLDownloads를 시작하고 모든 대표자가 NSData를 사용하여 모든 파트를 한 데 모은다고 말한 경우입니다. (내가 생각하는 모든 것을 모으는 가장 좋은 방법이 있어야한다. :) – nacho4d

관련 문제