PDA

Ver la Versión Completa : Compartir archivos (¿y carpetas?) entre ordenadores


dec
26-06-2007, 22:15:12
Hola,

Lo primero que se me ocurre para compartir archivos y tal vez carpetas... entre ordenadores es utilizar las IPs respectivas, qué sé yo, utilizar el protocolo "TCP", tan famoso, mediante algún componente de Delphi (por supuesto), pero, se ve que voy errado, puesto que buscando en Google no encuentro nada que vea interesante, lo que por otro lado es raro.

Esto último me hace pensar que no debo buscar bien. Que estoy errado en la base y así no puedo encontrar la forma de empezar siquiera. Ahora bien, yo os pregunto, ¿qué tan complicado resultaría una desarrollar una aplicación capaz de compartir archivos con otro ordenador? No sé si me explico.

La idea (más o menos) sería contar con una aplicación que "de algún modo" pudiera comunicarse con otra aplicación a través de Internet... vamos, que pudieran establecerse este tipo de "conversaciones" entre las dos aplicaciones:

- Oyes, tengo un archivo aquí que quiero compartir contigo.
- Ah... pues vale. Haz el favor de pasármelo.
- Ahí te va...
- Vale... ya estoy recibiéndolo...
- ...
- Se acabó. ¿Tienes el archivo?
- Pues claro, ¿qué te crees? Aquí está.
- Pues tan contentos, oye. :)

Lo que me gustaría es que alguien me diera alguna pista de por dónde empezar. O que me ponga en mi lugar... si resulta que no estoy enfocando bien el asunto, aunque esto, de algún modo, yo mismo lo reconozco... :)

Bueno. Como siempre muchas gracias de antemano a todos. :)

seoane
26-06-2007, 22:39:12
Pues a primera vista, que tiene de malo un ftp, o si me apuras un http. En cada ordenador montas un servidor ftp, lo puedes hacer fácilmente con Indy o usar algún otro programa con una seguridad y estabilidad mas probada.

Ahora viene la parte de programación. Tendrías que hacer un cliente de ftp capaz de conectarse al servidor y listar los archivos que contiene y, si el servidor lo soporta, obtener el md5 de los ficheros. Luego solo tienes que ver que archivos tienes que actualizar, y descargarlos del servidor. Solo tendrías que ejecutar este programa periódicamente, por ejemplo usando las tareas programadas del propio windows, y ya tienes tu carpeta local "sincronizada" con la remota.

¿Acerté o estabas pensando en otra cosa?

dec
26-06-2007, 22:42:01
Hola,

Aciertas seguro Seoane. Yo estoy más perdido que un pingüino en el Sahara. Sin embargo no termino de verlo. ¿Se supone que ambas aplicaciones tendrían que ser "Servidores y Clientes FTP"? ¿Se supone que podría haber un Servidor FTP que usarían ambas aplicaciones?

Por otro lado, ¿cómo hace la aplicación A para pedirle a B la lista de directorios o archivos que comparte? ¿Todo esto se haría partiendo de que sabemos las direcciones IP de los dos ordenadores? ¿Verdad? :D

seoane
26-06-2007, 23:01:33
Cono dijo Jack Vamos por partes :D

Primer problema las ips. Usa un servicio como no-ip (http://www.no-ip.com/) o DynDNS (www.dyndns.com) para tener un nombre que identifique a cada ordenador aunque su ip cambie.

Segundo problema, el servidor de ftp. El equipo que comparte los archivos tiene que tener instalado un servidor ftp. Lo puedes hacer tu o instalarte uno que ya este suficientemente probado, yo te recomiendo esto ultimo porque un servidor funcionando todo el día puede resultar peligroso si este tiene algún bug.

Una vez que tenemos el servidor ftp montado, solo tenemos que colocar los archivos que queremos compartir en el directorio raíz, aunque en principio daría igual si esta en el directorio raíz o en un subdirectorio del mismo.

Por otro lado tendríamos que hacer una aplicación cliente que se conectaría al servidor, crearía una lista de los directorios y archivos que el servidor contiene. Entonces bajaría los que considere necesarios para tener una copia local del contenido del servidor, y aquí es donde entra el md5, que nos permitirá saber si un archivo necesita actualizarse o no. Esta aplicación cliente se ejecutaría en segundo plano y una vez terminada su tarea se cerraría, y usando las tareas programadas, podemos hacer que se ejecute a intervalos de 5, 10 o 15 minutos por ejemplo.

dec
27-06-2007, 00:11:57
Hola,

No termino de cogerlo Domingo, pero, no te preocupes, fijo que es culpa mía. :)

Por ejemplo, el tema de las IPs, según yo, debería funcionar pudiéndose especificar la IP de un ordenador u otro indistintamente... o sea, ¿alguna vez viste un "Chat" a través de IPs, especificando la IP del ordenador con quien quieres "conversar"? ¿O lo he soñado? Si no lo he soñado esto es lo que se buscaría, solo que no se compartiría "texto" (cosa que por otro lado tampoco sé hacer a priori) sino algo más complicado aún (me parece)... archivos y/o carpetas...

seoane
27-06-2007, 00:40:11
No te sigo David, tu te das cuenta de que en una comunicación por Internet siempre tiene que haber uno que actué como servidor y otro como cliente. Pues bien, para iniciar la conexión tu le tienes que indicar al cliente la ip del servidor y ya esta. En el caso de un chat "directo" entre dos ordenadores es lo mismo, uno de ellos funciona como servidor y espera a que el cliente se conecte, el otro funciona como cliente y teniendo la ip del servidor se conecta a el. Lo de usar un servicio como no-ip lo decía porque normalmente las ips que nos asignan los proveedores de Internet suele cambiar y de esta manera tendríamos un nombre que siempre apuntaría al mismo equipo, pero solo era por comodidad.

dec
27-06-2007, 00:47:40
Hola,

Ya comprendo. Bueno, es un decir. :) No; en serio. En principio la aplicación no tendría que ocuparse del tema de las IPs, más allá de utilizar las que se proporcionen para realizar las conexiones oportunas: si las IPs son fijas o no a la aplicación no le importará, aunque, evidentemente, habrán de proporcionarse IPs válidas.

No sé. Se me hace muy complejo para mí. Quien me comentó de esta aplicación me habló del Messenger de Windows, que, por lo visto, permite compartir carpetas y archivos. Supongo que conseguir eso (obviando el tema de que en este caso se trataría con IPs y no con direcciones de correo... etc., etc.) es algo que me supera.

Bueno. No sé. Tal vez vuelva a ello... tal vez no. Pero en todo caso te agradezco tus respuestas Domingo. ¿Qué te parece? :)

seoane
27-06-2007, 01:03:23
Creo que ya se por donde vas, tu quieres una aplicación que le digas que comparta una carpeta, y otra que dándole la ip de la anterior se conecte y pueda copiar/pegar archivos en la completa compartida.

Pues bien, eso se llama F-T-P :D Y no lo digo por ser pesado. La forma mas sencilla es usar el componente TIdFTPServer, programando bien los eventos no hay problema. Del lado del cliente puedes usar también Indy o Wininet, para listar, subir, bajar o borrar los archivos de la carpeta que el servidor esta compartiendo.

Yo lo que todavía no tengo claro es si lo que quieres es programarlo tu todo, o si te serviría usar un servidor y un cliente ftp ya hechos. Así no tendrías que programar nada. Lo de programar solo tendría sentido si quieres integrar esto dentro de otro proyecto mas grande o con algún propósito muy concreto, si solo quieres manejar los archivos (copiar, pegar, borrar, etc) como si fuera otra carpeta mas, seguramente que te convenga utilizar un servidor y un cliente ftp ya hechos y probados.

D-MO
27-06-2007, 06:53:48
No se si te sirva de algo David, pero talvez esta búsqueda en Google (http://www.google.com/search?q=hamachi) te ayude algo.

Saludos.

dec
27-06-2007, 14:01:55
Hola,

Bueno. Muchas gracias a todos, de verdad. Creo que no estoy preparado para algo como lo que se requiere, para qué nos vamos a engañar. No sé si es que no me llama la atención, es el calor, o soy más vago que Bicho. :D :D

El caso es que uno ve cosas como Hamachi y bueno, qué decir... son estupendas. De momento creo que voy a dejarlo aquí por mi parte... aunque no descarto la posibilidad de volver a ello en un futuro. Ya veremos, que dijo Steve Wonder. :)