Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   curiosidades (https://www.clubdelphi.com/foros/showthread.php?t=18575)

zastilla 16-02-2005 18:52:04

curiosidades
 
hola,

tengo una duda, veamos, los programas p2p tipo emule hacen un identificador del archivo. como hacer eso? lo sencillo seria identificar el archivo por nombre y tamaño pero estos p2p si el archivo tiene distinto nombre por que alguien despues de bajarlo se lo cambio lo sigue reconociendo como tal y lo engloba dentro de los archivos con mismo id.

alguien podria indicarme como se hace eso?


otra cosa, al englobar los archivos usan como una especie de grid es posible hacer lo mismo o algo parecido.
bueno esto me importa menos pero lo otro si que parece muy curioso y me gustaria informacion sobre el tema.

un saludo y muchas gracias

mamcx 16-02-2005 22:28:59

Yo soy bruto pa esas cosas, pero eso nunca me ha detenido antes para responder ;)

Es probable que usen un algoritmo de checksum o un hash (aun mas probable) para determinar la equivalencia entre dos archivos...

__hector 17-02-2005 01:26:22

ping...

es justamente eso... el generar un "checksum" o llave (hash) del contenido del archivo. Para eso hay mil un programas que, dandole un input (archivo), te generan el hash o llave que identifica el archivo.

Segun la teoria de criptografia, el hash supone que, para una cadena X de N caracteres, siempre generará una cadena de longitud fija (y), y que será irrepetible en cuanto el input sea diferente.

O sea, ya sea que se pase "ector" o "hector" o "cualquierotracadenadecaracteresqueseavalidaparalaprueba", debe generar una cadena de longitud fija, que sera unica, y que identificara el contenido del parametro.

Referencias enhttp://www.openbsd.org

zastilla 17-02-2005 13:30:49

gracias
 
si di cuenta de que usaban el algoritmo de md5.
gracias

sobre la segunda parate
Cita:

otra cosa, al englobar los archivos usan como una especie de grid es posible hacer lo mismo o algo parecido.
sabeis algo? es que queda muy chulo eso de dar a la pestaña y que se despliegue toda la lista de de los archivos con igual hash

un saludo

mamcx 17-02-2005 15:45:41

Ya eso es un asunto de GUI. Un grid como el de www.devexpress.com o un arbol hacen el truco...

zastilla 17-02-2005 20:21:40

gracias
 
muchas gracias.

la verdad es que no esperaba una respuesta tan rapida. con todo esto me estoy creciendo y creo que os voy a formular una pregunta mas dificil...
como se hace para tranferir 2 archivos por tcp y que se pueda resumir la descarga si esta se interrrumpe? lo he intentado con las indy pero nada.
esta misma pregunta la formule hace tiempo y nadie me respondio, a ver si tengo suerte ahora.

el post que puse con su codigo esta aqui:
http://www.clubdelphi.com/foros/showthread.php?t=15952

por favor animaos y hechadle un ojo

gracias

mamcx 17-02-2005 21:56:37

Eso no lo hace automaticamente el protocolo FTP?

Tal vez deberias buscar una implementacion open source de un servidor FTP, a ver que tal...

Por otro lado, a lo bruto, la idea seria crear una tabla que guarde los bytes que se llevan y empezar a copiar a partir del ultimo... pero no se que tan dificil resulte...

zastilla 17-02-2005 22:52:22

lo de guardar los byte no es dificil, es mas las indy tiene una llama que indica el btye de la transferencia en que se encuentra. el problema radica en que una vez interrrumpida la transferencia el archivo tranferido se queda con un tamaño de cero con lo cual aunque sepas la posicion en donde se deberia reanudar no sirve para nada. lo de montar un ftp no me sirve, antes utilizaria el protocolo http, pero tampoco quiero. el tema esta en usar tcp. no quiero evitar los problemas sino aprender cosas nuevas.

un saludo y graias

mamcx 17-02-2005 22:59:54

Cuando recibes el stream, debes ir guardando en un archivo temporal.... asi no se pierde el progreso. Veo que es como lo hacen los demas programas

zastilla 18-02-2005 09:53:49

muchas gracias lo probare


La franja horaria es GMT +2. Ahora son las 22:58:26.

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