2010-02-01 7 views
4

다른 스레드를 사용하여 웹 사이트에서 파일을 다운로드하고 한 번에 파일의 다른 섹션을 다운로드해야합니다. Webclient.downloadfile 메서드를 사용할 수는 있지만 다운로드는 지원되지 않습니다. 파일 청크. 만약 당신이 튜토리얼을 가리킬 수 있거나 나에게 그것을 어떻게하는 지에 대한 아이디어를 주면 고맙겠습니다. 감사!여러 스레드로 파일을 다운로드하는 방법

답변

0

Rex의 대답을 피기 위해서, 어리석은 방법을 알 필요가 없습니다. 일부 웹 서버는 content-length를 제공하거나 일부는 길이가 -1을 반환합니다. 귀찮아, 나도 알아 ..

가장 좋은 방법은 고정 된 범위를 지정하고 시간 경과에 따른 청크의 예상 길이를 결정하기 위해 몇 가지 휴리스틱 또는 분석을 활용하는 것입니다.

Multipart Downloading in C#에 이와 비슷한 SO 질문을보고 싶을 수도 있습니다.

3

파일을 제공하는 서버는 청크에서도 다운로드를 지원해야합니다. 파일에서 시작하려는 바이트 위치를 지정하는 방법이 필요합니다. 첫 번째 바이트부터 시작하여 클라이언트가 바이트 위치를 받아 들일 때까지 또는 파일 끝에 도달 할 때까지 전송하십시오.

서버가이를 지원한다고 가정하면, 서버가 이것을 지원한다고 가정하면, 서버는이를 활용하는 방법에 대한 문서를 제공 할 것이므로 코드로 변환하는 데 도움이 될 것입니다.

0

WebClient 개체에는 'Headers'속성이있어서 'Range' header을 정의하여 파일의 일부만 요청할 수 있도록해야합니다.

0

여기에는 많은 if가 있지만, 거대한 텍스트 파일을 다운로드하는 경우 실제로 서버의 여러 파일로 분할하여 각 클라이언트의 주소를 클라이언트에 반환 할 수 있습니다. 파일 이름 규칙에 따라 개가 많은 섹션이 있다는 것을보고하면 클라이언트는 각 섹션을 다운로드하도록 스레드를 회전시켜 하나의 큰 파일로 다시 구성 할 수 있습니다.

유스 케이스는 확실하지 않지만,이 특정 시나리오는 아이디어가 더 빨리 진행될 가능성이 없을 수 있습니다.

관련 문제