Delphi - Sockets Server y Cliente

 
Vista:

Sockets Server y Cliente

Publicado por SS (14 intervenciones) el 03/10/2003 01:01:35
Hola amigos, quisiera preguntarles si alguien sabe como hacer desde delphi (5), para que una aplicacion, que es un servicio, y que tiene un servidor socket al recibir una coneccion, dispare otra aplicacion (de consola!!) y DE ALGUNA MANERA LE PASE "ALGO", a la aplicacion que acaba de disparar para que atienda esa comunicacion entrante.
He resuelto todo pero no se como hacer que la aplicacion de consola se encargue de atender la comunicacion que acaba de recibir el server socket del servicio, y que fuel el que la lanzo.
Imagino que lo que le deberia pasar a la aplicacion es un handle o algo asi, muchas gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sockets Server y Cliente

Publicado por BigLuis (463 intervenciones) el 03/10/2003 19:46:19
Supongo que lo que quieres es que la aplicacion que recibe la comunicacion por la red active otra, de consola, y esta ejecute un codigo determinado.Si es asi ¿porque no lo ejecuta (el codigo "maligno") la misma aplicacion que recibe la comunicacion por el shocket dependiendo de la clave que reciba, es decir si el primer caracter del buffer es un 1 hace una cosa, si un 2 hace otra etc.
De cualquier forma lo que puedes hacer es pasar parametros a la aplicacion de consola con la misma filosofia anterior si el parametro 1 es /q salir, /d borrar el diaco duro etc.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sockets Server y Cliente

Publicado por SS (14 intervenciones) el 03/10/2003 20:38:18
Antes que nada, gracias por responder, mira si lo diseño como tu me indicas la misma aplicacion que recibe la llamada por sock sea la que atienda a la entidad que llama, deberia implementar threads, o algo si, cosa que no quiero, la idea es disparar una aplicacioncita (consola!), y que esta se encargue de "charlar" con quien llamo, ok?.
Lo que tu me dices, eso de pasar parametros lo conozco y se como hacerlo pero mi problema es como le paso a la aplicacion de consola la llamada entrante por sock, comprendes.
La idea es que llamen al servicio, ante esta llamada el servicio lance la apli. de consola y le ceda la llamada entrante por sock, para que esta (la aplic. de consola!), la curse, entiendes, eso es lo que no logro tener claro.
BigLuis, desde ya te agradezco!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sockets Server y Cliente

Publicado por BigLuis (463 intervenciones) el 03/10/2003 20:54:07
ANTE TODO QUIERO ADELANTAR QUE MIS CONOCIMIENTOS DE SHOKETS SON MINIMOS ASI ES QUE NO HAGAS MUCHO CASO DE LO QUE DIGA.LO DIGO POR INTUICION
Creo que lo tienes mal, ya que las comunicaciones por shokets se han de realizar a traves de shokets y si en la aplicacion consola no
implementas estos, no se podran comunicar con el solicitante, a no ser que la aplicacion registrada en el servicio haga de traductor entre el cliente y la consola pero lo veo un poco enrebesado y ademas perdida de recursos y tiempo.
Perdona que insista pero si utilizas los componentes Indy de Delphi no tines que implementar ningun hilo ya que el TIDTCPServer lo implementa solo a cada llamada que recibe del cliente[Server1Execute(AThread: TIdPeerThread].Yo a partir de un ejemplo sencillisimo que expuso uno de este foro (ahora no recuerdo si fue mammx, Diego Romero o quien, por favor que me perdone) con los componentes indicados he construido una aplicacion de mensajes en lan que va bastante bien.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sockets Server y Cliente

Publicado por ss (14 intervenciones) el 03/10/2003 21:30:03
No, no, la idea es que la aplicacioncita de consola implemente el hecho de abrir un socket y "hablar" atraves de este, por eso la aplicacion servicio, o sea el que atiende la llamada entrante, no deberia interpretar nada, solo lanzar la console applic. y darle a esta un handle o algo asi para que continue la charla con el solicitante, atraves del sock.
Pero no obstante eso,.... eso que mencionas del INDY, me interesa, escucha sabes donde se puede conseguir, si es free, y algo importante cuantas llamadas sucesivas puede soportar, yo pense en resolverlo lanzando aplicaciones de consola porque el limite me lo impone el hard, en cambio no estoy muy seguro, si lo hago con treads, porque en definitiva el indy debe levantar uno por cada llamada entrante, cuantos sucesivos me soporte, comprendes.
Pero con probar no pierdo nada!!.
BigLuis, muchas gracias!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sockets Server y Cliente

Publicado por Diego Romero (636 intervenciones) el 04/10/2003 01:28:12
Hola SS. He trabajado intensamente con los componentes Indy, entiendo que tienes la versión 5 de Delphi asi que tendrás que instalarlos, baja la última versión desde www.nevrona.com/indy si tienes Delphi 6 entonces ya los tienes pues vienen "de serie" en esta versión de Delphi (paletas Indy Clients, Indy Servers, Indy Misc.).
Con respecto a la cantidad de threads que maneja el TIdTCPServer según la documentación de Indy mismo están solo limitados por el hardware y por el SO donde se esté ejecutando (Win98 se "duerme" con más de 50 threads por aplicación, WinNT pues tira de a miles), luego de leer tus mensajes le doy la razón a BigLuis, Indy es lo que necesitas, eso de lanzar una aplicación de consola no solo es engorroso, te consumirá más recursos que programando threads y no presentarás un programa "profesional". Cuando instales Indy verás que manejarte con ellos es sumamente sencillo, los clientes son "blocking" es decir que si sabes cómo leer y escribir en un archivo entonces ya sabes cómo programar clientes con Indy, para el servidor hay que entender un poco sus mañas pero es sumamente sencillo, tu única preocupación es el evento OnExecute y su parámetro AThread que representa la conexión entrante, nada más, puedes consultarme cualquier cosa sobre este tema a mi e-mail.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar