URL e HTTPURLConnection

7 respostas
B

olá, estou tentando fazer um gerenciador de arquivos e download, queria saber como posso faço para quebrar o download do arquivo em varias conexoes, como um gerenciador de downloads faz! desde ja agradeço

7 Respostas

_Renatu

Olha o que achei no google:

http://www.java-tips.org/java-se-tips/javax.swing/how-to-create-a-download-manager-in-java.html

B

Esse seu exemplo Renato, ele usa apenas uma conexao para fazer a transferencia do arquivo! Estou falando de ter varias conexoes e escrever no mesmo arquivo sem repetir os bytes copiados por outra conexão! Assim como o free download manager ou outro similar!

_Renatu

Entendi seu problema agora… desculpe.

Não é só fazer a mesma coisa que este código faz, em threads separadas?!

B

Não, dai se eu colocar varias threads paralelas com essa dai ele vai pegar e ler os bytes do arquivo que outras threads ja leram e escreveram, tornando assim ainda mais lento que se fosse uma conexao apenas, porque vai estar desperdiçando largura de banda!

_Renatu

Você leu o código?

Pelo que eu entendi, nesta parte do código você diz qual parte do arquivo você quer baixar:

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

Sendo assim, se for bem programado, nenhuma thread vai ler bytes que outra thread já leu…

B

Eu vi isso ai sim so que nao entendi esse metodo! se vc sabe como funciona, poderia me explicar? vlw!

_Renatu

Bom, pelo que li aqui:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

e aqui:

http://msdn2.microsoft.com/en-us/library/aa287673(VS.71).aspx

O “Range” aí é um cabeçalho do protocolo HTTP 1.1 e serve pra dizer qual parte do conteúdo requisitado que você deseja receber.

Este recebe os primeiros 500 bytes do conteudo:
Range: bytes=0-499

Este recebe os ultimos 500:
Range: bytes=-500

Neste caso, suponhamos que você já tenha baixado 1500 bytes do conteúdo, e quer receber só o resto, faria assim:
Range: bytes=1500-

E é exatamente isso que aquele método está fazendo pra você.

Criado 19 de maio de 2007
Ultima resposta 19 de mai. de 2007
Respostas 7
Participantes 2