PDA

Ver la Versión Completa : Error conexión con el servidor


Catublipas
09-03-2015, 11:17:30
Buenas a todos,
He terminado una aplicación y funciona a la perfección en mi ordenador pero,
estoy intentando instalar la aplicación en otro ordenador, todos los ordenadores tienen instalado interbase 7.0, y utilizan otra aplicación que se conecta con nuestro servidor y acceden a la BBDD sin problema.
La aplicación se conecta con la base de datos en alojada en el servidor para hacer las consultas. Ya tuve un problema al desarrollar esa conexión ya que parecia que el servidor me rechazaba la conexión. Para ello instale el complemento fibplus para Delphi xe 6 y desde mi ordenador corre perfecto. Ahora bien lo instalo en otro pc (he creado un instalador con Inno Setup y he incorporado el Midas.dll para no tener problemas con el clientdataset). Pero me salta un problema para conectar con el servidor, probablemente sea una tontería de algún complemento que tenga que ir en el instalable, pero no se que debo hacer.Pero cuando intenta acceder al servidor para hacer las consultas me salta este error:

Unable to complete request to host "172.16.1.100". Failed to locate host machine.
Undefined service 3050 /tcp

¿Qué me puede faltar? Si necesitais algo más de información solo tienes que decirlo. Muchas gracias de antemano. Y gracias de nuevo por ayudarme a superar los problemas para desarrollar la aplicación.

Un saludo!

Casimiro Notevi
09-03-2015, 11:25:34
¿Has instalado interbase local en ese ordenador?

Catublipas
09-03-2015, 11:35:02
Buena pregunta, yo no he instalado nada, ya que este ordenador tenía instalada otra aplicación que conecta con la misma base de datos y no tiene problema alguno para conectar con el servidor. Por eso pensé que no necesitaría nada más. ¿Cómo puedo saber si está instalado?

Casimiro Notevi
09-03-2015, 11:40:39
Si otro programa conecta al mismo servidor y a la misma base de datos, entonces es que está instalado y funciona bien.

El mensaje de error es como si no estuviese conectado. ¿Puede ser que busques fbclient.dll en lugar de gds32.dll?
¿Tienes instalado la misma versión de interbase en ambos equipos?
¿Usas por defecto el puerto 3050?

Catublipas
09-03-2015, 11:49:15
Si, es la misma versión, Interbase 7.0.
También uso el puerto 3050 para conectar con la base de datos.

Casimiro Notevi
09-03-2015, 12:48:55
Como no des más pistas.
¿Es correcta la IP 172.16.1.100?

Catublipas
09-03-2015, 13:19:56
La IP está clavada, porque en el mío funciona perfectamente no solo desde delphi, sino instalandola también.
Te comento los pasos que he seguido en un ejemplo resumido a ver si damos con la tecla.
Imaginemos una aplicación más sencilla, que simplemente accede a una base de datos donde checkea nombre y nos muestra un listado de personas con ese nombre.
Para ello creo un formulario con una IBDataBase con la conexión al servidor 172.16.1.100/3050:E\basededatos.gdb, la testeo y conecta perfectamente.
Creo el IBTransactiony la linko con la IBDataBase. Creo la consulta y lo enlazo con el clientdataset.
Todo esto funciona perfecto, por lo tanto compilo el proyecto. Creo un instalador con Inno Setup, incluyendo el midas.dll.
Lo instalo en el mismo ordenador que lo he creado, me crea la carpeta donde esta el .exe, me incorpora el midas.dll, uninstall.dat y uninstall.exe.
Arranco la aplicación y perfecto hago la consulta, conecta con el servidor y me devuelve la consulta.
Este mismo setup lo instalo en otro PC, me crea los mismo archivos, ejecuto el programa, arranca perfecto, pero voy a hacer la consulta y me salta el error:

Unable to complete request to host "172.16.1.100". Failed to locate host machine.
Undefined service 3050 /tcp.

Hay algo que me he saltado incorporar y no se que es.

Casimiro Notevi
09-03-2015, 13:44:43
Entonces, repito: ¿tiene instalado interbase cliente ese equipo?
¿La unidad "E" es física o "virtual"?

La ruta debe ser física del servidor, ejemplo: 192.168.1.100:C:\basedatos.gdb

El puerto puedes no ponerlo porque es el 3050, predeterminado.

Catublipas
09-03-2015, 14:10:50
La ruta es la física del servidor, ese fue un problema que ya solucioné que también tuve hace unos días jajaja.
E Interbase 7.0 está instalado, ya que entro en programas y características y me aparece. Pero ya me pones en duda a ver si yo tengo una versión distinta, ya que cuando empecé con este proyecto, yo sabía muy poquito sobre Delphi e Interbase. E instalé Firebird 2.5 aunque luego la desinstalé. No sé, ando algo perdido, y más porque no puedo tocar nada de lo que ya está establecido. No puedo cambiar nada con respecto al servidor. Y la empresa que lo montó no da soporte y yo no estuve.
¿Hay algunas pautas que pueda seguir para darte más información?

Muchas gracias de nuevo!

Casimiro Notevi
09-03-2015, 14:14:34
Pues tendrás que asegurarte de que está instalado interbase 7.
Y quitar firebird, si no te sirve.

Catublipas
09-03-2015, 14:33:54
Interbase 7.0 esta instalado en Programas (x86)\Borland en los dos PCs. Antes de instalar el complemento FIBPlus, yo no podía acceder desde delphi a la base de datos del servidor(Sí con una copia en local pero no a través de la conexión que he mostrado antes). ¿Puede ser que tenga algo que ver? ¿A lo mejor tengo que incorporar algo de este complemento?

Casimiro Notevi
09-03-2015, 14:39:25
Vale, está instalado, pero ¿está funcionando?

Los componentes de acceso a datos FIBplus, si están configurados correctamente, conectarán siempre, no en un equipo, sí, y en otro, no.

Catublipas
09-03-2015, 14:51:39
En principio, si corre la otra aplicación que conecta a la misma bbdd debería estar en funcionamiento no? pero si me dices como lo puedo comprobar te lo digo.
Porque no le veo manager. En mi PC si que tengo el Interbase Manager, pero en el otro no. Perdona mi ignorancia. Espero no desesperarte mucho. La clave está en, ¿qué hay de más en mi PC donde tengo instalado Delphi que no tenga el otro al instalarle la aplicación?

Casimiro Notevi
09-03-2015, 14:56:44
En principio, si corre la otra aplicación que conecta a la misma bbdd debería estar en funcionamiento no?
Entonces debe funcionar :confused:

Catublipas
09-03-2015, 15:01:30
¿Puede ser que sea el mismo FIBPlus? Lo que tengo instalado es una versión Demo. Pero bueno como tu dices no puede funcionar bien en uno y mal en otro.
Así estoy yo jajaja, que no se porque no va :S.

Casimiro Notevi
09-03-2015, 15:18:39
antivirus, firewall, etc. ¿lo has mirado?
Puede que el otro programa tenga permiso para acceder.

Catublipas
09-03-2015, 15:25:14
Sí, ya probé deshabilitandolo temporalmente tanto antivirus como firewall, añadiendolo a excepciones pero nada. Sigue sin funcionar :(.

Casimiro Notevi
09-03-2015, 20:55:36
Haz un programita con un simple botón que conecte a la base de datos, para probar y verificar que no es problema de tu programa.

Catublipas
10-03-2015, 08:47:31
Hecho, y tengo el mismo problema. He usado un IBDatabase, IBTransaction, IBQuery, un DataSource y un Grid. Para hacer una consulta sencilla.
Y me da el mismo problema. ¿No creo que sea ninguno de los componentes no?
Es que no entiendo que tiene de más mi PC que no tenga el otro. No se me ocurre nada. ¿Hay alguna otra solución?

Casimiro Notevi
10-03-2015, 09:19:08
Es que no entiendo que tiene de más mi PC que no tenga el otro. No se me ocurre nada.

Eso es precisamente lo que no podemos ver nosotros desde aquí.
Aparentemente el servidor no te deja conectar, ¿el motivo?, podría seguir dando palos de ciego, pero sin poder "tocarlo"... dependemos de ti y tus comentarios.

Catublipas
10-03-2015, 09:24:43
A ver si por aquí encontramos alguna conexión. Antes de instalar FIBPlus, yo desde Delphi no podía conectar con la base de datos en el servidor. ¿Hay algún otro componente que haga lo mismo que FIBPlus? A ser posible que sea gratuito. Es que me rechazaba igual la conexión. Aunque no saltaba el mismo mensaje exactamente, me ponía que la connection rejected. ¿Puede ser que esté ahí la clave?

Casimiro Notevi
10-03-2015, 09:28:56
Creo que te estás obsesionando con FIBplus :)
FIBplus es descendiente de las IBX (las que vienen con el propio delphi), así que puedes probar con estas.
Pero antes, asegúrate de que tu programa (y el de prueba) se conectan a otro servidor, no hagas las pruebas directamente contra el servidor que quieres conectar, porque así puedes tener un problema en tu programa y nunca te enterarías.
Primero te aseguras de que funciona. Luego conectas con ese servidor que no puedes conectar.
Y no hagas una prueba de conexión local, eso no vale.

Catublipas
10-03-2015, 09:42:41
Un apunte a ver si te da alguna pista, yo utilizo los componentes que vienen con Delphi instalado de Interbase, es decir, IBDataBase, IBTransaction... de la pestaña Interbase de Delphi. Intentaba conectar con el servidor con la opción remoto del componente IBDataBase y me ponía lo de la conexión fue rechazada, desde el mismo Delphi. Entonces instale FIBPlus la versión demo et voilà, por arte de magia conectaba. Sin utilizar los componentes ni hacer nada. Me resulto muy extraño porque iba a utilizarlos, pero ya funcionaban los que yo ya había instalado.
¿Te da alguna pista?

Casimiro Notevi
10-03-2015, 09:47:02
¿Puede ser que busques fbclient.dll en lugar de gds32.dll?
¿Tienes instalado la misma versión de interbase en ambos equipos?

Mira la configuración de tus componentes, fbclient lo usa firebird y gds32 lo usa interbase (aunque firebird puede usar ambos)

Catublipas
10-03-2015, 10:01:55
Vale, te comento la versión de Interbase en ambos es 7.0, ahora bien, tuve bastante desconocimiento sobre el tema al principio, e instalé Firebird aunque actualmente está desinstalado. ¿Puede ser que tenga algo que ver? ¿Como puedo ver la configuración de los componentes?

Casimiro Notevi
10-03-2015, 10:32:51
Vale, te comento la versión de Interbase en ambos es 7.0, ahora bien, tuve bastante desconocimiento sobre el tema al principio, e instalé Firebird aunque actualmente está desinstalado. ¿Puede ser que tenga algo que ver? ¿Como puedo ver la configuración de los componentes?

A ver, es que quien está delante del ordenador eres tú :p, nosotros no 'vemos' nada que tú no digas.
Ya hemos hablado de esto antes. Si instalaste firebird y no te sirve, desinstálalo.

Catublipas
10-03-2015, 13:12:18
Buenas de nuevo Casimiro, no puedo dedicarle demasiado a esto, y me está desesperando la verdad. Así que he optado por trabajar de forma local, como el programa solo va a hacer consultas, y es a una base de datos muy pequeña, realizaré una copia sistemáticamente de la base de datos al pc en cuestión y que el programa acceda en local a la base de datos. Bueno mira lo que me ha ocurrido, he instalado en los dos PCs la última versión estable de firebird 2.5.3.26780, he configurado la IBDataBase con conexión remota aunque en server he especificado localhost, protocol tcp port 3050 y la ruta C:\BBDD.

Vale, he intentado dos cosas una sin meter la base de datos en el instalador, lo cual me daba el mismo problema que antes solo que en lugar de especificar la ip 172.16.1.100, me pone localhost. Sin embargo en el PC donde he creado la aplicación si que funciona. La otra opción ha sido incluir la base de datos dentro del instalador e indicarle la misma ruta que tengo en el PC donde he creado la aplicación, para que la bbdd se instale en la misma ruta que el PC original. Bueno así la aplicación me crashea el PC y no funciona. Como comenté antes he utilizado Inno setup.
Ah en el PC cliente(o destino ya que no hay servidor al final) he instalado flamerobin para ver si podía acceder a la base de datos y accede sin problema.

¿Cuál es el problema ahora?

Catublipas
10-03-2015, 13:17:41
Buenas de nuevo Casimiro, no puedo dedicarle demasiado a esto, y me está desesperando la verdad. Así que he optado por trabajar de forma local, como el programa solo va a hacer consultas, y es a una base de datos muy pequeña, realizaré una copia sistemáticamente de la base de datos al pc en cuestión y que el programa acceda en local a la base de datos. Bueno mira lo que me ha ocurrido, he instalado en los dos PCs la última versión estable de firebird 2.5.3.26780, he configurado la IBDataBase con conexión remota aunque en server he especificado localhost, protocol tcp port 3050 y la ruta C:\BBDD.

Vale, he intentado dos cosas una sin meter la base de datos en el instalador, lo cual me daba el mismo problema que antes solo que en lugar de especificar la ip 172.16.1.100, me pone localhost. Sin embargo en el PC donde he creado la aplicación si que funciona. La otra opción ha sido incluir la base de datos dentro del instalador e indicarle la misma ruta que tengo en el PC donde he creado la aplicación, para que la bbdd se instale en la misma ruta que el PC original. Bueno así la aplicación me crashea el PC y no funciona. Como comenté antes he utilizado Inno setup.
Ah en el PC cliente(o destino ya que no hay servidor al final) he instalado flamerobin para ver si podía acceder a la base de datos y accede sin problema.

¿Cuál es el problema ahora?

Casimiro Notevi
10-03-2015, 13:18:24
Estas cosas se hacen paso a paso. Probando cada paso.
No puedes hacer lo que has hecho. ¿Has eliminado interbase y has puesto firebird?, ¿has dejado interbase?, ¿cómo has copiado la base de datos?, ¿has hecho un backup transportable antes de restaurarla para usarla con firebird?
Me vienen a la cabeza montones de preguntas y problemas que pueden surgir por cada una.
Lo dicho, céntrate en lo que quieres hacer y ve paso a paso, probando cada paso y asegurándote de que es correcto.

Catublipas
10-03-2015, 13:36:03
Muy bien, voy a seguir intentando conectar con el servidor, pero desde luego me tiene desesperado. Si encuentro algo que pueda ser relevante te lo hago saber por aquí.

Muchas gracias Casimiro por tu paciencia! :)

P.D: Lo que me parece supercurioso es que en uno funcione y en el otro no. Incluso solapando Interbase y Firebird.

Casimiro Notevi
10-03-2015, 13:39:35
Debes de tener paciencia e ir pasito a pasito. No des un paso si todavía no estás seguro que el anterior está bien dado.
Porque así, como estás actuando, te haces un lio tremendo y no llegas a ninguna conclusión.

Catublipas
10-03-2015, 14:41:57
Bueno Casimiro, por fín!!!!
Madre mía, al final tenías tu razón, era un conflicto de Interbase.
La aplicación la he desarrollado en Delphi XE 6.
Ha sido desinstalar Interbase 7.0 e instalar embarcadero Interbase XE y sin problema corren las dos aplicaciones.
Lo que me resulta extraño es porqué funciona en el PC que he creado la aplicación si tambien tiene instalado Interbase 7.0 y XE(instalado con el Delphi).
Supongo que algo tendrá que ver el propio Delphi.
Habías hecho mucho incapié y era eso al final, más acertado no podías estar jajaja. Como la nueva versión de Interbase empieza por Embarcadero pues no lo encontraba en programas XD.

Mil millones de gracias, por tu ayuda de verdad! :D

Un saludo muy grande!

AgustinOrtu
10-03-2015, 16:44:40
Yo estoy seguro que es porque tenias alguna libreria sobreescrita. Instalaste delphi -> interbase -> firebird. Firebird al instalarse al final te metio su version de la gds32.dll y por eso no te deja conectarte a tu servidor

Al reinstalar el delphi te reemplazo la liberia por la version correcta

Digo yo, que no creo en la magia jaja

Casimiro Notevi
10-03-2015, 17:18:11
Habías hecho mucho incapié y era eso al final, más acertado no podías estar jajaja. Bueno, era pura lógica ;)

Catublipas
10-03-2015, 17:36:32
Casi con toda seguridad, porque ese fue el orden. Muchas gracias de verdad.
:D:D

fjcg02
10-03-2015, 18:15:16
De todas maneras, cuando hay dudas de conectividad, lo más fácil es hacer una comprobación para ver si los equipos tienen conectividad.

Desde un equipo donde queremos conectarnos....
telnet ip_del_servidor puerto

En este caso
telnet 172.16.1.100 3050

Si la pantalla se queda negra o da algún mensaje de identificación, es que hay conectividad entre el equipo y el servidor. Entonces en este caso sería problema de la aplicación, dlls, ...
Si da un error, es que hay algo que impide la conexión, como puertos cerrados, firewalls, redireccionamiento de puertos en el router mal hechos, ... En este caso tendríamos que solucionar previamente la conexión entre los equipos.

Espero haber aportado algo.

Saludos



Saludos