Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Problema con TIdTcpServer y TIdTcpClient de las Indy...

Buenos días a todos,

os cuento, estoy intentando desarrollar una aplicación en la cual, por una lado tenemos un servidor implementado con el componente TIdTcpServer de las Indy y el resto son clientes que tienen el TIdTcpClient de las indy también.

Para realizarlo, me he fijado en el ejemplo de las Indy del chat, el cual tiene el mismo esqueleto.

Cuando yo abro comunicación entre un cliente y el servidor todo funciona bien, los datos llegan del cliente al servidor y la respuesta del servidor al cliente.

El problema es el siguiente, yo quiero en determinados momentos, mandar mensajes del servidor al cliente sin que éste me haga ningún tipo de petición. Para lograr ésto, tengo una lista de los clientes con sus TIdPeerThread guardados para luego poder comunicarme con ellos por el "canal de comunicación" que éste me abrió cuando se conectó.

Para ello, pongo un Timer en el cliente y cada medio segundo en el timer hago lo siguiente:
Código Delphi [-]
procedure TForm2.TimerTimer(Sender: TObject);
var
  Msg: String;
begin
  //Cada cierto tiempo tendremos que estar mirando si nos llega algo del servidor
  if not IdTcpClient.Connected then
    exit;

  Msg := IdTCPClient.ReadLn('', 5);  //El 5 es un timeout para que no se quede ahí anclado siempre
  if Msg <> '' then
    MemoLog.Lines.Add(Msg);
end;

Pues no me funciona...(el ejemplo de ls Indy tampoco )
El problema está en la línea
Código Delphi [-]
Msg := IdTCPClient.ReadLn('', 5);
Se me queda ahí parado el cliente sin hacer caso al timeout.
Si fuerzo enviar un mensaje desde el servidor, éste llega con datos y el cliente lo lee y sigue adelante pero como a los 0,5 seg vuelve a entrar en el timer sucede lo mismo...

Porqué no funciona el timeout? como debería hacerlo??

Un saludo y muchas gracias.
Responder Con Cita
 



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
TIdTCPServer, TIdTCPClient y mala conexión Val Internet 2 21-06-2014 22:52:24
Ayuda con TidTCPClient y TidTCPServer vejerf Internet 10 24-05-2007 16:47:58
TidTcpServer,TidTcpClient nenufer Internet 11 14-06-2006 12:17:04
Escuchar con TIdTCPServer (indy), por varios IP en una misma maquina fabianbbg Internet 1 31-01-2006 01:27:04
Urgente tidTcpServer Indy Pally Internet 2 30-08-2003 01:01:11


La franja horaria es GMT +2. Ahora son las 20:43:03.


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