Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
DUDA Recursos de Red

Pss, Pss...
Tengo una aplicación en una empresa desde hace bastante tiempo y va muy bien... PERO.... Resulta que cuando aparece por la empresa el técnico de turno, lo fastidia todo y no es capaz de recomponerlo.
Esto ocurre cuando adquieren un nuevo ordenador o formatean uno viejo o simplemente cambian el nombre de una máquina en red.
El programa en su módulo de configuración, dispone de un apartado para configurar la BD o más concretamente su path, además de un Test de conexión para verificar esa ruta. A pesar de las explicaciones que doy de instalar Firebird y de configurar ese path, resulta que el técnico, al parecer no quiere pecar de "pringao", desentendiéndose de todo aquello que no sea formatear...
Lo cierto y verdad es que como quiera que son varios los ordenadores que acceden por red a la BD, me gustaría montar un sistema capaz de auto configurarse y que fuera capaz de localizar por la red por las diferentes máquinas, justamente en la cual se encuentra la BD.
Realmente no se como abordarlo, supongo que
  • En primer lugar tendría que saber todas las máquinas que están en la red...
  • Y en segundo lugar, por ejemplo, hacer alguna prueba con el puerto 3050 para ver si pita...

En el primer punto, ya me pierdo...

En fin, la idea es detectar el path (incluida la IP o nombre la la máquina) donde se encuentra la Base de Datos.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #2  
Antiguo 07-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
El tema parece interesante.

Una primera aproximación sería obtener la ip de la maquina en la que estamos, su mascara de subred, y a partir de ahí ir comprobando, en todas las ips posibles de la subred, cual tiene el puerto 3050 abierto. Esto es lento, los intentos de conexión fallidos tardan mucho en detectarse.

Otra posible solución es utilizar UDP. En el servidor tenemos un pequeño programa que este escuchando por un puerto UDP. Cuando una aplicación dentro de la red local quiere averiguar la ip del servidor solo tiene que enviar un mensaje UDP a la dirección de broadcast de forma que todos los equipos lo recibirán a la vez. Entonces el programa que esta escuchando responderá con otro mensaje, esta vez directamente a la ip del equipo que preguntaba. Incluso puede enviarle la ruta completa, o cualquier otra información de configuración que consideres necesaria.

¿que te parece?
Responder Con Cita
  #3  
Antiguo 07-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Joer...
La primera opción a simple vista se ve muy buena, aún a pesar de que tarde tiempo...
la Opción de UDP, también la veo muy interesante, pero le veo el inconveniente de tener que tener (valga la redundancia) un programa a la escucha solamente para ese cometido, dado que esa circunstancia se produce muy de cuando en cuando...
Casi voy a experimentar con la primera....
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #4  
Antiguo 07-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Dos preguntas tontas:
1-El servidor no genera una ip al equipo de red.?
2-Veo que trabaja con ip, como mysql, en Firebird no se coloca la direccion ip en algun componente directamente, como es el caso de zeos para mysql.?
Disculpen la intromision, pero me parecio muy interesante el tema.
Saludos
Responder Con Cita
  #5  
Antiguo 07-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola Caral, el problema aquí es que cuando esta creando el programa no sabes la ip que va a tener el servidor, pues en cada empresa donde instales tu aplicación pueden tener una configuración de la red diferente. En una el servidor puede ser 10.10.1.3 y en otra 192.68.1.33, como ves ni siquiera están dentro del mismo rango de ips. Esto se soluciona pidiendo la ip del servidor al configurar el cliente, pero en el caso de Ardilla parece que el cliente es un vago, y se busca que el cliente se configure solo.
Responder Con Cita
  #6  
Antiguo 07-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Seoane
Otra pregunta:
Como sabes utilizo un archivo .ini en mi programa para que busque la base de datos, crees que seria una opcion en este caso, se podria hacer algo para que modificando solamente este archivo (como es mi caso), el cliente pudiera encontrar la direccion ip., o se complica?
Por otro lado si lograis hacer el programa de enlace, lo pondriais por aqui?
Saludos
Responder Con Cita
  #7  
Antiguo 07-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por seoane
El tema parece interesante.
Otra posible solución es utilizar UDP.
broadcast
Al final me he decantado por esta opción, resulta la más fácil y completa.
De paso, seguro que lo aprovecho y a consta de esta tontería les monto un sistema de mensajería interna...
"JEFE "ven aquí"--->SECRETARIA "ya voy" ---> JEFE

Además lo voy a montar en el mismo programa, sin necesidad de otro que escuche... Como en la máquina donde está la BD siempre utilizan el programa en modo local, será este el que se encargue de decir a los demás, donde está la BD, la respuesta de éste, será "Host:Unidad:\Ruta....\Base de Datos.Gdb".
Únicamente tendré que explicarles que para que esto funcione, el programa donde se encuentra la BD tendrá que estar en ejecución... Creo que tampoco es mucho pedirles a cambio de lo que van a obtener con simplemente pulsar un botoncito de nada...
Ya estoy haciendo pruebas con los UDP y funcionan de maravilla, veremos que tal se comportan cuando esté en la red... Por añadidura, espero no tener que pegarme con FireWalls y cosas así...
Gracias Domingo por tu planteamiento tan efectivo ...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Recursos en Español D7 IBX 7.07 cacuna Varios 15 24-09-2004 16:41:48
Evaluador de Recursos marto Varios 3 22-01-2004 18:16:49
Recursos para D7 hgiacobone Varios 1 21-07-2003 12:16:13


La franja horaria es GMT +2. Ahora son las 08:39:24.


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
Copyright 1996-2007 Club Delphi