Ver Mensaje Individual
  #1  
Antiguo 07-08-2008
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Reputación: 22
JXJ Va por buen camino
Trocear archivos

Saludos gurus, delphi.

tengo el siguiente asunto..

tengo archivos. de todo tipo,
con delphi. e indy 9 que viene con delphi 7 o con la que viene con
delphi 2007. la casi mas nueva version estable de indy. que soporta mas de 1 giga en su transferencias.

entonces.

quiero enviar archivos, y segun hacer mas rapido, y eficiente.
estilo p2p, emule, torrent.
y aqui mi problema.

presupongo que
tengo que dividir el archivo a enviar
en partes de tamaño constante. digamos 1,4 mb, como un disquete. si son
archivos grandes. o en un tamaño proporcional al archivo.
y enviar una por una, y colocarlas en una carpeta TEMP
como archivos temporales y arreglar el unirlas.
y el resultado ponerlo en la carpeta incoming.
del lado del cliente.

creo asi le hacen los p2p.

pero...mis dudas son:

¿como le hago para dividir un archivo,?
¿como enviarlo, con indy?
¿acaso para dividirlo lo tengo que leer, todo?
aunque pese 50 megas. se me hace mucho uso de la pc, para un archivo
medianamente grande, o si es de 2 gigas, o hasta 5, gigas.
leerlo por cada solicitud, y enviarlo.

Se puedo solo cortar del archivo, las partes que se necesiten enviar,
digamos faltan enviar las partes 5, 9, 29, 40,
solo obtener esas partes, sin leer el archivo a un stream, cada vez
que se soliciten partes del archivo

despues de que ya se sabe cuantas partes constantes un archivo de
cierto tamaño se puede dividir

el escenario es tipo p2p,,
yo (Z) no tengo el archivo completo y hay dos que si lo tienen completo
o tienen las partes que a mi me faltan estos son (A) y (B)
entonces les pido,
que me manden (A) las partes 5 y 9 , (B) las partes 29 y 40.

Quiero que ellos no tiengan que leer seguido el archivo de 50 megas
por que hay 20 como yo que quieren otras partes, que ellos tienen.
ademas de que hay otros archivos que comparten, segun se los van pidiendo

y no quiero que ellos sobre usen su pc, mejor dicho que la aplicacion consuma pocos recursos al enviar partes de muchos archivos
que muchos les va a estar solicitando.

Por eso la solucion se me hace mejor es la de obtener el trozo de archivo
sin cargar el archivo a un stream, solo cortarlo o copiar , tomar esa parte
de archivo ya sea a memoria
(son unos 1 a 3 megas) y enviarlo. a quien lo solicita.

Ayuda gurus. no desvirtuadores.
Responder Con Cita