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 21-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Unhappy Delphi y Sockets

Hola!!!

Voy a hacer un programa cliente servidor, pero la verdad es que no se si utilizar sockets o a hacerlo por medio del corba, el problema es que mi cliente no quiere comprar las licencias para utilizar el visibroker y yo para distribuir mis aplicaciones que incluyan el visibroker, sale en una lanota.

La verdad es que no se ni como se utilizan los sockets, alguien haria el favor de mandarme unos ejemplos o alguna pagina en donde vengan como se utilizan,(no se absolutamente nada), o en el caso contrario, que puedo utilizar??

Desde ahora, muchas gracias a todos por poner atencion a estos mensajes

Cómo te sientes hoy?
Responder Con Cita
  #2  
Antiguo 21-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Si lo que quieres realizar es una aplicación en tres capas, podrías usar DCOM para la conexión y los módulos remotos de datos (Remote Data Module), en vez de los módulos de datos de CORBA (CORBA Data Module). (DCOM es de libre distribución y, por lo menos para mi, es mas fácil de configurar a la hora de establecer la conexión con el servidor).

Tienes un ejemplo en las mismos demos que incluye Delphi, dentro de la carpeta "Demos\Midas\SharedConn" (generalmente está en: C:\Archivos de programa\Borland\Delphi7\Demos\Midas\SharedConn).

Saludos!
Responder Con Cita
  #3  
Antiguo 21-09-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Te recomiendo esta lectura:

http://www.solucionesvulcano.com/blo...ciendo-la.html

y

http://www.solucionesvulcano.com/blo...-primeros.html

No te recomiendo el uso de DCOM, es muy facil de programar pero presenta lios a la hora de desplegar y por defecto se desactiva en empresas con minimo de conciencia de seguridad.

Lo mejor es cosas basadas en los estandares, tcp/ip, http, etc...
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 22-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Lo que estaba pensando es usar sockets, pero no se que tan dificil es hacer un programa c/s con sockets, Tengo uno que usa corba y visibroker y me gustaria cambiarlo por sockets(por lo de las licencias), pero no se que tan dificil sea.

Gracias

Cómo te sientes hoy?
Responder Con Cita
  #5  
Antiguo 22-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
En realidad, puedes utilizar sockets casi tan fácil como usar DCOM (ya que tambien se utilizan módulos de datos remotos), sólo necesitarás instalar, en el servidor de aplicaciones, el servidor de sockets de Borland (Borland Socket Server) y tenerlo funcionando en el servidor antes de iniciar la comunicación. En lado del cliente, tendrás que usar el componente 'TSocketConnection' y configurar la propiedad 'Address' o 'Host' (para especificar la dirección del servidor) más la propiedad 'ServerName' (para especificar el módulo de datos remoto del servidor de aplicaciones que contiene los componentes que acceden a la base de datos).

(Aunque te lo expliqué todo muy simple, podrías fijarte en los diferentes ejemplos que trae Delphi en la carpeta "Midas" para ver como funciona)

Saludos!
Responder Con Cita
  #6  
Antiguo 22-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Muchas gracias, en este momento, estoy en el trabajo y no tengo el disco de delphi, en cuanto llegue a casa hare una prueba.

De nuevo muchas gracias.

Te contare como me fue

Cómo te sientes hoy?
Responder Con Cita
  #7  
Antiguo 22-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Y me imagino que con ese no hay problema de licencia, verdad??

quiero imaginar que viene con el delphi 5(viene incluido en la licencia de delphi 5)

Gracias

Cómo te sientes hoy?
Responder Con Cita
  #8  
Antiguo 22-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Pues nop, no lo hay. Por cierto, el ejecutable del servidor de socket se encuentra dentro de la carpeta "Bin" de Delphi (el archivo se llama "scktsrvr.exe").

Aquí te dejo un artículo muy interesante que te dice como crear un cliente utilizando sockets: http://bdn.borland.com/article/0,141...#_Toc444246746
(Aunque te aconsejaría revisar todo el artículo porque te explica conceptos muy interesantes).

Saludos!
Responder Con Cita
  #9  
Antiguo 23-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Hola!!

que es lo que le tengo que poner en el serverName???

La verdad es que no le encuentro.
Hice lo que me dijiste en el primer paso, corri el socketserver, en el cliente puse mi socketconnection en la propiedad address le puse la direccion del cliente, que en este caso es la misma que el servidor (hasta ahi no hay ningun problema), pero el momento de ponerle algo en la propiedad servername, ahi es donde no se que parametro ponerle, y por lo tanto, no me deja conectar, ya cheque otros ejemplos, pero no le encuentr, Si me podrias ayudar porfavor.

Gracias.

Cómo te sientes hoy?
Responder Con Cita
  #10  
Antiguo 23-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
al momento de querer conectar,me manda un error de nombre de clase no valida.

Gracias
Responder Con Cita
  #11  
Antiguo 23-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
La propiedad 'ServerName' sirve para especificar el módulo de datos remoto del servidor de aplicaciones. Lógicamente, para hacer la prueba, necesitarás crear antes el servidor, es decir, un proyecto a parte con un módulo de datos remoto y, dentro de éste, los componentes de acceso a datos necesarios.

Fíjate en los ejemplos de Delphi (los de la carpeta "Midas") para que veas como se crea el servidor (ya que la operación es la misma tanto si se usan Sockets como DCOM).

(De todas formas, cualquier cosa vuelve a preguntar!)

Saludos!
Responder Con Cita
  #12  
Antiguo 23-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
ya cheque en los ejemplos de delpbi, pero no me deja correrlos.

De todos modos tengo corriento el Borland Socket Server( es necesario tener este programa corriendo???), me refiero que si mi cliente no va a ser necesario que tenga la licencia de delpbhi para correr el borland socket server?.

creo q es una pregunta un poco burda, pero bueno.

Gracias.
Responder Con Cita
  #13  
Antiguo 23-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
mira, en mi programa servidor, primero me pidio un nombre de clase y le puse "soquete", posteriormente puse un DataSetProvider(no se si tenga que ser ese) y una tabla, y los ligue y ya, no se si tenga que poner un serversocket o que?, en todos los ejemplos que he visto, dicen que pongas las tablas y el Provider y ya.

No seas malo, hechame la mano, me urge, o dime cual o en donde esta mi "h"error, Muchas gracias

Cómo te sientes hoy?
Responder Con Cita
  #14  
Antiguo 23-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
El Borland Socket Server sólo es necesario tenerlo corriendo en el servidor (y no en el cliente, como ya te comenté), ya que es el que permite la conexión a través de sockets. Visita la siguiente dirección que te da una instroducción al uso de MIDAS: http://www.distribucon.com/papers/midasintro/dl210.htm (tambien podrías visita la misma Web para obtener mas información: http://www.distribucon.com/midas.html)

(Sobre el tema de las licencias, creo que de pagar licencia sería mas bien por el uso de los componentes relacionados con MIDAS, pero he buscado información y no he encontrado nada al respecto).

Saludos!
Responder Con Cita
  #15  
Antiguo 23-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Cita:
Empezado por david duarte
mira, en mi programa servidor, primero me pidio un nombre de clase y le puse "soquete", posteriormente puse un DataSetProvider(no se si tenga que ser ese) y una tabla, y los ligue y ya, no se si tenga que poner un serversocket o que?, en todos los ejemplos que he visto, dicen que pongas las tablas y el Provider y ya.

No seas malo, hechame la mano, me urge, o dime cual o en donde esta mi "h"error, Muchas gracias

Cómo te sientes hoy?
En el servidor tendrías que tener un módulo de datos remoto (TRemoteDataModule) con los componentes de acceso a datos (que dependerán de la tecnología que uses para conectarte a la base de datos: BDE, Interbase, dbExpress o ADO) y tantos componentes TDataSetProvider como DataSets tengas en el módulo (por supuesto, cada TDataSetProvider ha de estar enganchado a su correspondiente DataSet).

Una vez creado el servidor, ejecútalo para que el módulo de datos remoto (que, a fin de cuentas, se trata de un objeto COM) se registre en el registro de Windows (tambien se pueden crear estos modulos en .DLL)


En el lado del cliente (antes asegúrate de tener corriendo el Borland Server Socket en el servidor) añade un módulo de datos con un componente TSocketConnection, tantos ClientDataSet como DataSets hubieran en el servidor y, lo mismo, para el componente DataSource.

Por último, configura el componente SocketConnection para que se enganche al servidor (propiedad 'Address' o 'Host', si el servidor se encuentra en la misma máquina que el Cliente, entonces, puede especificar "localhost" en la propiedad 'Host') y al módulo de datos remoto (propiedad 'ServerName', al desplegar la propiedad te aparecerán todos los módulos de datos remotos registrados en Windows). Después, configura el ClientDataSet para que se enganche al SocketConnection (propiedad 'RemoteServer') y a un DataSet del servidor (propiedad 'ProviderName'). Eso es todo!

Saludos!
Responder Con Cita
  #16  
Antiguo 23-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
OK. Muchas Gracias

Lo voy a implementar, y te digo como me fue.

Saludos!!!!!

Cómo te sientes hoy?
Responder Con Cita
  #17  
Antiguo 23-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
mensaje de error

Invalid action received: 18

este error me sale cuando le doy clic para que me aparezca el nombre del servidor(Server Name).

Te comento ahora yo:

al añadir el modulo de datos remotos, a la CoClassName le puse soquete, Instancia Multiple instance, Threading Model Apartment.

tengo el servidor remoto, ahi añadi 2 tablas y dos TDatasetproviders (uno para cada tabla), DataSet1->tabla 1, Dataset2 - > tabla2. Activo las tablas. y ejecuto el servidor

En el lado del cliente, cree un nuevo proyecto, le añadi un datamodule, 2 clientdataset y un socketconnection.

Pero al momento que le doy clic en el ServerName, me sale ese error, habra algun problema???

Gracias.

Cómo te sientes hoy??
Responder Con Cita
  #18  
Antiguo 23-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
En principio, parece que lo hiciste todo de forma correcta. Lo único que se me ocurre decirte es que, antes de que el Cliente conecte, te asegures de que el Borland Socket Server esté corriendo, y otra cosa: ¿Puedes poner a "True" la propiedad 'Connected' del SocketConnection?
Responder Con Cita
  #19  
Antiguo 26-09-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Hola!!!

No pude checar mi proyecto el fin de semana, pero aqui te pongo la respuesta.

No, no puedo, me marca lo siguiente:

Cannot Connect, socket1connection1 must contain a valis ServerName or ServerGUID.

Si le doy clic en ServerName me aparece el error 18, y si le pongo un nombre en ServerGUID me sale el siguiente error "Cadena clase no valida".

No entiendo porque, no me sale automaticamente el nombre del servidor, Tendre que registrarlo en el registro de win para que lo reconozca o que tendre que hacer??

Gracias.

Cómo te sientes hoy?
Responder Con Cita
  #20  
Antiguo 26-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
He estado leyendo sobre este error en los grupos de noticia de Borland y comentarte que el problema puede deberse a dos motivos:

- Versión icorrecta del scktsrvr. Tienes que ejecutar la misma versión que viene con la versión de Delphi que estés utilizando para desarrollar tu aplicación (en tu caso, la v5).

- O que no tengas bien configurada tu tarjeta de red. Es necesario configurar una IP estática.

Así que comprueba ambos casos porque, la verdad, es que nunca me pasó y no se que mas decirte...

Saludos!
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


La franja horaria es GMT +2. Ahora son las 22:08:51.


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