Ver Mensaje Individual
  #1  
Antiguo 26-04-2010
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Reputación: 22
sur-se Va por buen camino
Conexión bidirecional TCP

Hola. Utilizo los componentens Indy 9 para programar servidores o clientes TCP/IP de conexión.
El problema que tengo ahora es que necesito implementar un cliente que se conecte a un servidor, pero estableciendo una comunicación bidireccional iniciable por cualquiera de los dos extremos. Me explico:
- La aplicación cliente (que estoy desarrollando) se conecta a un servidor TCP/IP remoto a través de una ip y un puerto y envía una trama de login, a la que el servidor responde con OK (más o menos) si todo va bien.
- A las peticiones o comandos enviados por el cliente, el servidor responde en consecuencia según la operación.
- Ahora bien, de forma asíncrona y sin peteción previa del cliente, el servidor puede enviar tramas de información (petición de datos al cliente) o similar.

Es decir, aunque el cliente inicia la conexión y establece el canal TCP, el servidor a veces inicia el envío de un comando que no es respuesta de una petición del cliente.
Esto es lo que no sé como implementar. Con el componente idTCPClient inicio la conexión y envío tramas y espero respuestas, pero no tengo un evento como en el idTCPServer que se dispare cuando se reciba información.
No veo claro como implementarlo. Se me ocurre un temporizador y que cada cierto tiempo compruebe si hay algo en el buffer de entrada, pero no me parece muy adecuando.
¿Pueden darme alguna sugerencia?
Gracias.
Responder Con Cita