Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2010
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Hola. El protocolo con el servidor es sencillo. Sólo unos cuantos tipos de envíos del cliente al servidor con su correponsdiente ACK por parte del servidor.
El problema es cuando el servidor decide iniciar el envío de datos al cliente sin petición previa de esté.
Una solución podría ser como dices poner el cliente en lectura, y esta es en sí la cuestión de la pregunta. ¿Como pongo al cliente en lectura? Pues el idTCPServer tiene un evento OnExcute que se dispara al recibir datos, pero en el idTCPClient no hay.
Ahora mismo, resumiendo, se me ocurren dos posibilidades:
- Temporizador que cada cierto tiempo (milisegundos) compruebe si hay datos, y si los hay los procese.
- idConnectionIntercep evento OnReceive, que captura las tramas antes del IdTCPClient por lo que podría analizar la cabecera y determinar si el tipo de paquete es respuesta a un comando del cliente o se trata de una comunicación de comando por parte del servidor.

Afortunadamente el protocolo es bastante sencillo y son pocos tipos de tramas los que se envían entre cliente y servidor.
Pero en caso de un sistema de comunicaciones más complejo, no veo la opción a establecer una conexión TCP totalmente bidireccional en igualdad de rangos, es decir, ambos extremos de la conexión actúan como clientes o como servidores según necesiten.
Un saludo
Responder Con Cita
  #2  
Antiguo 29-04-2010
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Hola. Después de varias pruebas, con el componente idConnectionIntercept no se puede hacer ya que este componente no dispara el evento OnReceive a menos que el idTCPCliente haga un Read. Por tanto esa solución descartada.
La otra opción, con el temporizador parece que si funciona bien. Seguí investigando un poco más sobre como hacerlo y encontré que en la demo que trae de Chat hace eso exactamente, ya que el servidor de chat debe propagar los mensajes escritos por los usuario hacia el resto de los clientes, y el mecanismo que utiliza es el de un temporizador cada medio segundo para comprobar si hay alguna información recibida.
Así funciona aparentemente bien, y desde el servidor se pueden enviar mensajes a los clientes.
Lo pongo aquí por si le puede servir a alguien en el futuro.
Un saludo.
Responder Con Cita
  #3  
Antiguo 27-12-2010
angelito_0303 angelito_0303 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 1
Poder: 0
angelito_0303 Va por buen camino
Ayudaaa

Hola estoy intentado desarrollar algo parecido a lo que decis.
El cliente que se conecte al servidor (TCP/IP) debe enviar una trama de login, a la que el servidor debe responder ok si va bien y sino le pide que se registre.
El servidor debe responder en consecuencia de lo k haga el cliente. (mensaje alta, mensaje baja y poder guardar en un fichero log).
Estoy bastante perdido en el tema, me podeis ayudar o pasarme el codigo vuestro??? muchas gracias
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
conexion web Zehcliv Internet 0 17-10-2008 11:35:59
conexion ip armando Conexión con bases de datos 3 15-07-2007 02:56:31
Conexión TCP A Fox lpedrazzi Providers 0 27-02-2007 15:43:40
Conexión ADO scooterjgm Conexión con bases de datos 2 03-04-2006 17:13:21
Conexion con C++ trex2000 Conexión con bases de datos 1 16-03-2004 06:48:00


La franja horaria es GMT +2. Ahora son las 10:05: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