PDA

Ver la Versión Completa : ¿Cómo descargar Archivo de Muchas Fuentes?


JXJ
13-03-2007, 22:33:20
Hola,

yo creo esto tiene algo que ver, con lo de peer to peer,
y manejadores de descargas.

No se si exista algo parecido.. con codigo fuente Delphi, o c, para
revisarlo.. o entiendo mal el enfoque al problema.

por ejemplo que quiero descargar
1 archivo
Existen 7 fuentes distintas, del mismo archivo,
y creo que es el mismo pues me guio que tienen el mismo hash
Se que existen 7 fuentes distintas, por que las revise 1 por 1
y les cree el archivo has.

¿como descargar simultaneamente de las 7 fuentes distintas
y armar en la pc que contendra el archivo a descargar
el archivo que descargo?


yo solo he descargado archivos desde una sola fuente.
no de varias fuentes, como lo hace el emule.
ni como lo hace el flashget

seoane
13-03-2007, 23:27:29
Vamos por partes. El archivo que quieres bajar donde se encuentra ¿en un servidor web? ¿en una red p2p? ¿en un servidor ftp? ...

Tanto el emule, como otro programas lo que hacen es partir el archivo en pedacitos. Luego solo tiene que ir pidiendo los diferentes trozos a cada una de las fuentes, una vez que tiene todos los trozos solo tiene que recomponer el archivo original.

Sea como sea, para poder hacer nosotros algo así, el protocolo que estemos usando debe soportar el enviar "trozos" de un archivo. Por ejemplo algunos servidores web permiten solicitar partes de un archivo, de esta manera podemos solicitar diferentes trozos de cada fuente.

JXJ
14-03-2007, 01:32:33
bien. seaone...eso no me lo sabia..

Mi interes, es por hacer algo para repartir/actualizar archivos, en
cadena.

pienso en un escenario, usando, TCP/IP, indy o otra suite.

hay 7 archivos por repartirse, descargarse actualizarse.
los 7 son lo mismo. pero estan cada uno en un servidor diferente.
entonces son 7 servidores, por principio, como en un sitio web.
un servidor apache o iis, no se si sea mejor usr un servidor ftp.

entonces esos 7 servidores son los servidores semilla. de dodne
otros 25 servidores, van a abastecerse, por el nuevo archivo.
empezando por los más cercanos geograficamente. y continuando,
con los más alejados

Entonces, pienso que si 4 servidores semillas, estan saturados.
los otros 25 servidores, intenten completar la descarga de los otros 3 servidores semillas.
y ya más raro, es que entre los 25 que tratan de descargar. busquen
entre si cual tiene lo que al otro le falta. y se lo repartan.

seoane
14-03-2007, 02:09:08
Caramba :eek: lo que describes se parece bastante al protocolo bittorrent, aunque supongo, por tu uso de la palabra "semilla", que ya lo tenias en mente. Pues bien, nada te impide montarte un servidor de bittorent privado, y utilizar clientes de bittorrent para realizar las descargas.

Si quieres hacerlo tu mismo, primero tenemos que detallar mas el escenario. Hablas de 7 + 25 servidores, por lo que si no es una red local, entiendo que cada equipo conoce la dirección de los otros 32, si no es así la cosa se complica. También hablas de usar apache, IIS, etc ... por lo que entiendo que no quieres hacer el software del servidor, solo el de los clientes.

Partiendo de lo anterior, yo me imagino el siguiente sistema. Colocamos en un servidor (o en los 7 primeros) los archivos a descargar, pero troceado cada archivo en archivos mas pequeños. Colocamos también un archivo de texto con los nombres de cada trozo, el archivo al que pertenece cada trozo, su posición dentro del archivo e incluso su Hash (md5 por ejemplo). Un cliente solo tendría que pedir la lista a un servidor, y luego ir pidiendo esas partes a cualquiera de los servidores. Una vez descargadas todas las partes solo tendríamos que juntarlas.

Ahora viene lo divertido, si cada cliente tiene a su vez un pequeño servidor web montado, solo tendríamos que ir colocando las partes descargadas y comprobadas (usando el Hash) a disposición del resto. De esta manera los clientes podrían compartir partes entre si.

La parte mas complicada, es la de repartir el trafico. Si dejamos decidir a los clientes de donde bajar las partes, no habrá forma de repartir la carga entre todos los servidores adecuadamente. Y si dejamos que un solo servidor se encargue de regular todo el trafico, tendríamos que implementar nosotros un servidor propio, ya no nos valdría el apache ... ¿o si? :rolleyes:

En cualquier caso es mucho trabajo, y no creo que sea eso lo que buscas. Por que no pruebas con la idea del servidor de bittorrent, creo que es lo mejor.