Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Trocear archivos (https://www.clubdelphi.com/foros/showthread.php?t=58971)

JXJ 07-08-2008 19:53:57

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.

enecumene 07-08-2008 20:48:46

Cita:

Empezado por JXJ (Mensaje 306409)
...
Ayuda gurus. no desvirtuadores.

Ah joder, te iba a ayudar pero ya no podré.

Saludos.

FGarcia 07-08-2008 21:27:58

Ni hablar!

Ni como ayudarte!!!

JoseFco 07-08-2008 21:37:38

Presupongo que tu lo que quieres son las partes.Y continuando con el presuponio, presupongo que eso no es muy legal.
Desvirtuadores SI, pero muy derechos.;)


Un Saludo.

eduarcol 07-08-2008 21:58:11

Cita:

Empezado por JoseFco (Mensaje 306427)
Presupongo que tu lo que quieres son las partes.Y continuando con el presuponio, presupongo que eso no es muy legal.
Desvirtuadores SI, pero muy derechos.;)


Un Saludo.

no pues, eso si y mucho...

Ademas los gurus estan durmiendo, solo quedamos los desvirtuadores, si quieres te echamos una ayudadita...

JoseFco 07-08-2008 22:01:18

Cita:

Empezado por eduarcol (Mensaje 306433)
no pues, eso si y mucho...

Ademas los gurus estan durmiendo, solo quedamos los desvirtuadores, si quieres te echamos una ayudadita...

jejejejejeje si quieres le podemos trocear al poliburro y le mandamos 14" de megabytes.:D:D:D

eduarcol 07-08-2008 22:04:55

Cita:

Empezado por JoseFco (Mensaje 306434)
jejejejejeje si quieres le podemos trocear al poliburro y le mandamos 14" de megabytes.:D:D:D

y como sabes esas medidas? :eek:

JoseFco 07-08-2008 22:12:27

Cita:

Empezado por eduarcol (Mensaje 306435)
y como sabes esas medidas? :eek:

Tu si que eres indiscreto carnal, como tu crees que te voy a confesar que egostar me lo conto.:D:D:D

JoseFco 07-08-2008 22:19:42

Bueno continuando con el presuponio y analizando profundamente este hilo creo que los locos estan sueltos.

PD:Este hilo deveria ser relocalizado a La Taberna.

Un Saludo.

enecumene 07-08-2008 23:03:22

Cita:

Empezado por JoseFco (Mensaje 306434)
jejejejejeje si quieres le podemos trocear al poliburro y le mandamos 14" de megabytes.:D

:confused::eek::confused::eek::confused::eek::confused:....:eek::eek:

JXJ 07-08-2008 23:45:16

Cita:

Empezado por JoseFco (Mensaje 306427)
Presupongo que tu lo que quieres son las partes.Y continuando con el presuponio, presupongo que eso no es muy legal.
Desvirtuadores SI, pero muy derechos.;)


Un Saludo.

Que quede muy claro..

es para mi. uso de asuntos personales.
repartir, informacion p2p, de mis archivos, mis videos. mi musica.
es mio. de mi.. YO, el propietario legitimo, que solo uso una camara
un audifono, para hacer los archivos.
Mi software, mis, archivos ISO, de mis cosas, de mis documentos,
de mis respaldos.

Es para hacer mi sistema de respaldos, descentralizados.
entiendase.
Mis cosas.

un respaldo de ellas a las diferentes pcs, o lugares, donde este,
solo el software, por el cual, pedi su asistencia o ayuda.

Una vez lista, la aclaracion, que es innecesaria.

[Manden este tema, a la taberna.]
ya se lleno de comentarios que no sirven., exepto los mios claro.

Mejor eliminenlo.

enecumene 08-08-2008 00:12:37

Vamos hombre, no seas así, mira conseguí este link donde hay un free source de un programa p2p hecho en delphi tal vez te ayude.

Saludos

JXJ 08-08-2008 01:59:27

..
pues, que ese codigo ya lo estoy revisando.

Por que no tengo certeza de que compile.

ya lo he intentado, muchas veces. y a cada ocasión
da error de supernodo.
y otras extrañas faltas.

total no va ese codigo..

JoseFco 08-08-2008 02:17:02

Cita:

Empezado por JXJ (Mensaje 306463)
..
pues, que ese codigo ya lo estoy revisando.

Por que no tengo certeza de que compile.

ya lo he intentado, muchas veces. y a cada ocasión
da error de supernodo.
y otras extrañas faltas.

total no va ese codigo..

Me a pasado mil veces que encuentro un codigo y asumo que estara todo probado y que funcionara.En ocasiones he encontrado muchos errores como que le faltan end; que falta declarar algunas cosas, etc. Ten eso en cuenta porque suele suceder.Ahora eso si si te dan un codigo es mejor que nada amigo.Ya por lo menos tienes una idea de como corre la cosa.

Un Saludo.

Neftali [Germán.Estévez] 08-08-2008 09:18:42

El código de Ares debería funcionar si lo bajas del lugar correcto. Es más, el programa está funcionando correctamente. Hay que leerse la documentación y tener muy presente las directivas de tipo DEFINE.

En cuanto a la pregunta, échale un vistazo a procedimientos del tipo: Seek, Read,... y demás procedimientos de acceso a ficheros. Puedes probar algo así:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  f: file of Byte;
  size: Longint;
  S:String;
  ch:Char;
  b:Byte;
  i:Integer;
begin
  if OpenDialog1.Execute then begin
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    try
      size := FileSize(f);
      S := 'Tamaño del fichero: ' + IntToStr(size);
      MessageDlg(S, mtInformation, [mbOK], 0);

      memo1.Lines.Add('--------------------------');
      // Leer 100
      for i := 0 to 100 do begin
        Read(f, b);
        memo1.Lines.Text := memo1.Lines.Text + IntToStr(b) + ' ';

        // Guardarlo en otro
        //...
      end;

      Seek(f, size div 2);
      S := 'Position actual: ' + IntToStr(FilePos(f));
      MessageDlg(S, mtInformation, [mbOK], 0);
      
      memo1.Lines.Add('--------------------------');

      // Leer otros 100
      for i := 0 to 100 do begin
        Read(f, b);
        memo1.Lines.Text := memo1.Lines.Text + IntToStr(b) + ' ';

        // Guardarlo en otro
        //...
      end;

    finally
      CloseFile(f);
    end;
  end;
end;

Para enviarlos sí que puedes utilizar Streams; Hace no muchos días estuvimos hablando de cómo enviar cosas a travñés de Indy, e incluso Seoane colocó código para hacerlo (no más de 2 o 3 semanas -el hilo hablaba de enciar imágenes-).

Junto con el trozo que envías deberías enviar información que te permita identificar o ubicar posteriormente ese trozo. Ya sea posicion de inicio y tamaño, algun identificador del número de la parte, tamaño y número de parte,... (hay muchas posibiliodades).

Neftali [Germán.Estévez] 08-08-2008 09:21:15

Cita:

Empezado por JXJ (Mensaje 306452)
[Manden este tema, a la taberna.]
ya se lleno de comentarios que no sirven., exepto los mios claro.
Mejor eliminenlo.

No te molesten hombre.
Pero en parte ha sido culpa tuya; Poner esta coletilla es poner gritar con un altavoz que te "apedreen"... :D:D:D

Cita:

Empezado por JXJ (Mensaje 306409)
Ayuda gurus. no desvirtuadores.

Un saludo.

JXJ 08-08-2008 15:34:53

si fuera la seccion de la taberna.

pero esto no es esa seccion.

felipe88 08-08-2008 16:00:29

Hola,

Ya recordaba haber visto algo parecido a lo que necesitas, justo aqui, la verdad lo probe hace tiempo pero durante el proceso de unir el archivo tuvo algunos problemas que a final de cuenta no quise seguir probando, espero te sirva :)

JXJ 10-08-2008 15:14:41

felipe88
Grcias revisando.. el codigo


La franja horaria es GMT +2. Ahora son las 07:41:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi