Ver Mensaje Individual
  #1  
Antiguo 28-04-2016
Mendizabal Mendizabal is offline
Miembro
NULL
 
Registrado: sep 2014
Posts: 31
Reputación: 0
Mendizabal Va por buen camino
Transferencia de archivos entre equipos remotos

Buenas Club Delphi,
Creo que estoy en la sección correcta. Si no fuera así, que el moderador pertinente se sienta libre de mover el hilo.

Antes de nada una pequeña aclaración: He buscado y leído muchos hilos al respecto de los que voy a preguntar. Tanto aquí, como en otros foros. He visto mucha información al respecto, pero aún así me gustaría que me dirigieras un poco. También he de decir que gran parte de las dificultades que estoy hallando vienen por desconocimiento de base en telecomunicaciones.

Dicho esto, empecemos por el principio. Estoy programando un programa de gestión para una serie de clínicas. Hasta aquí todo bien, y nada que se salga de lo común. El problema que me encuentro es que dichas clínicas comparten pacientes e historiales médicos. Todo lo que sea información (digamos, texto) no me causa problemas. Todos los programas clientes apuntarán a la misma base de datos, con lo cual no hay problema. Es algo que he hecho cientos de veces y es bastante sencillo. Pero la cosa es que también tienen que compartir archivos de imágenes, y ahí sí que la cosa se me escapa. No lo he hecho nunca, y tampoco sé muy bien como plantearlo.

La arquitectura que he planteado es la siguiente: Un servidor en una de las clínicas sobre el que correrá la base de datos (SQL Server, en este caso, pero eso es lo de menos). El servidor ya lo he montado y funciona sin problemas. De hecho ya están operando con las aplicaciones de gestión y funciona a las mil maravillas. Como ya dije, lo he hecho cientos de veces. Para compartir archivos había pensado usar un servidor FTP (el propio de Windows, a ser posible, o FileZilla o programar yo mismo uno con IndyFTPserver). Luego, los programas clientes buscarían los archivos en el servidor, y los descargarían al equipo local. Del mismo modo, al añadir archivos nuevos, los clientes los subirían al servidor. El problema que tengo es que no logro ver el servidor FTP desde un equipo externo. He probado el propio de windows configurado mediante IIS, he probado el de FileZilla y he probado un servidor sencillo programado con el componente Indy FTPServer. En ningún caso logro abrir el servidor desde un equipo externo (ni con un cliente programado con el componente cliente indy FTP, ni mediante el cliente FTP de la consola de comandos de windows). Es muy probable que lo esté configurando mal, aunque yo me inclino a que se deba a un problema de seguridad. Obviamente he redirigido los puertos que voy a usar en el Router. También he habilitado los servidores FTP para que puedan pasar a través del firewall. Incluso he habilitado las comunicaciones mediante los puertos implicados en el firewall del sistema operativo. No sé si me he dejado algo, pero no se me ocurre que puede ser. Como dato adicional, el servidor me contesta al hacerle ping desde cualquiera de los clientes. Bueno, de hecho, como ya dije, los clientes comunican sin problemas con la base de datos. Así que el problema no viene por ahí.

Ya sé que la pregunta es muy general. Pero me gustaría, a ser posible, que alguien me guiara un poco en alguno de estos sentidos:

1.- Configuración correcta del servidor FTP. Tanto la configuración elemental (creo que eso lo tengo bien, pero vete a saber), como las posibles trabas de seguridad. Me da igual si es con el servidor FTP de windows, como si es FileZilla, como si es cualquier otro. Eso sí, descartaré opciones de pago salvo que sea algo totalmente imprescindible.

2.- Información sobre cualquier otro protocolo de transferencia de archivos que sea fácilmente implementable con Delphi. De hecho, si puede ser con Indy, pues mejor (no me gusta usar componentes de terceros que siempre acaban dando problemas). Al principio probé con un sistema simple cliente servidor, transfiriendo los archivos mediante el cliente TCP de Indy. En una red local ya lo he hecho algunas veces y no me ha dado demasiado problema, pero en equipos remotos es la primera vez. A lo mejor solo necesito un par de claves. Las formas en las que he programado estos servidores-cliente en una red local ha sido capturando streams. De hecho no recuerdo si me ayudasteis en este mismo foro, pero es bastante posible.

3.- Cualquier otra arquitectura posible. No sé me ocurre cual puede ser, pero hay mucho sabio por estos lares que tal vez tenga una solución mucho más sencilla para compartir archivos entre equipos remotos.

Varios datos relevantes:

- El servidor está corriendo sobre un sistema operativo Windows Server 2012. De todas formas, por causas ajenas a mi y que no tienen ningún sentido, en breve pasará a correr sobre un sistema operativo Windows 7. Si dependiera de mi, el servidor correría en Unix. Pero no depende de mi.

- Mi IDE de programación es Delphi XE6.

- Los Indy que estoy usando son la versión 10.6

Muchas Gracias.

Pd: He dicho que las clínicas deben poder compartir imágenes entre ellas. Pero también deben compartir archivos de vídeo.

Última edición por Mendizabal fecha: 28-04-2016 a las 15:40:03.
Responder Con Cita