Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Unhappy Error Ejemplo Chat en Indy tcp (server & socket)

Hoal a todos, m edispuse a aprender como se utilizan los Indy components con lo ejemplos libres que hay en nevrona pero el primer ejemplo del chat cuando el cliente se conecta con el servidor este se cuelga y como no se mucho de esto me quede out side al revisar esta es la parte del código que no funciona bien:
Código Delphi [-]
 procedure TForm1.Timer1Timer(Sender: TObject);
 var
   Com,
   Msg : String;
 begin
   if not IdTcpClient1.Connected then
     exit;
   Msg := IdTCPClient1.ReadLn('', 5);
   {
     parte que no funciona, todo este código esta dentro de un
     timer, a lo mejor tenga  que cambiar algo en el programa
     servidor?
   }
   // showmessage(Msg);
 
   if Msg <> '' then
   begin
     if Msg[1] <> '@' then
     begin
       { Not a system command }
       memLines.Lines.Add(Msg);
     end
     else
     begin
       { System command }
       Com := UpperCase(Trim(Copy(Msg, 2, Pos(':', Msg) -2)));
       Msg := UpperCase(Trim(Copy(Msg, Pos(':', Msg) +1, Length(Msg))));
       if Com = 'CLIENTS' then
         lbClients.Items.CommaText := Msg;
     end;
   end;
 end;
dicho sea de paso no encontre nada por la red para leerme como funcionan estos componentes, el ejemplo usado es el chat de indy 9.0 Por fa alguna ayuda de como solucionar ese bug o si alguien sabe un manuaa para leérmelo un poco. Mil gracias.

Última edición por dec fecha: 15-09-2005 a las 00:14:38. Razón: Encerrar el código fuente en la etiqueta [DELPHI]
Responder Con Cita
  #2  
Antiguo 15-09-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por Clantt
dicho sea de paso no encontre nada por la red para leerme como funcionan estos componentes, el ejemplo usado es el chat de indy 9.0 Por fa alguna ayuda de como solucionar ese bug o si alguien sabe un manuaa para leérmelo un poco. Mil gracias.
En el sitio oficial de las INDY está también la documentación (de INDY 9 e INDY 10): documentación INDY.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 15-09-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por Clantt
Hoal a todos, m edispuse a aprender como se utilizan los Indy components con lo ejemplos libres que hay en nevrona pero el primer ejemplo del chat cuando el cliente se conecta con el servidor este se cuelga y como no se mucho de esto me quede out side al revisar esta es la parte del código que no funciona bien:
El código que publicaste no se ejecuta al conectarse un cliente... se está ejecutando constantemente en el cliente para leer los nuevos mensajes que pudiera enviar el servidor.

Te recomiendo seguir paso a paso la ejecución para determinar la instrucción exacta donde el programa se traba, y así será posible ayudarte.

Por último, comentar que este demo lo he compilado y usado muchas veces en los años anteriores, y nunca me ocurrió tal comportamiento. Probablemente haya algo dañado en tu instalación de windows.

Hasta luego

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 15-09-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Unhappy

Cita:
Empezado por jachguate

Por último, comentar que este demo lo he compilado y usado muchas veces en los años anteriores, y nunca me ocurrió tal comportamiento. Probablemente haya algo dañado en tu instalación de windows.
mmm al parecer no es problema de windows por que lo probé en tres máquinas con windows xp y nada el cliente se cuelga. si alguien lo puede revisar lo puede verificar. gracias
Responder Con Cita
  #5  
Antiguo 15-09-2005
m@kio m@kio is offline
Miembro
 
Registrado: may 2005
Posts: 42
Poder: 0
m@kio Va por buen camino
Talking Yo lo resolvi de la siguiente forma...

Código Delphi [-]
     //Checar mensajes, se crea un hilo para ejecutar lo k se hace en el timer
     TMsj = class(TThread)
     protected
       procedure Execute; override;
     end;
   
   var
     //Se hace una variable del tipo k hicimos para despues crearla 
     ChecarMsj:TMsj;
   
   //Procedimiento cuando se ejecuta el hilo
   procedure Tmsj.Execute;
   var
     Msg : String;
   begin
    with form1 do
    begin
     if not IdTCPClient1.Connected then
       exit;
   
     Msg := IdTCPClient1.ReadLn('');
   
     if Msg <> '' then
       if Msg[1] <> '@' then
         begin
         { Not a system command }
           memLines.Lines.Add(Msg);
         end
    end;
   end;
   
   //Procedimiento del timer solo creas el hilo
   procedure TForm1.Timer1Timer(Sender: TObject);
   begin
   ChecarMsj:=TMsj.Create(false);
   end;

Pruebalo a mi me funciono espero k te sirva si no entiendes pues aki estamos para intentar ayudarte
Responder Con Cita
  #6  
Antiguo 15-09-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Hola me da mucho gusto que me ayudaras, aún no lo probé pero se que funcionará. Como dije al principio estoy aprendiendo los componentes Indy y bueno en este código hay algunas cosas que no entiendo.


Cita:
Empezado por m@kio
Código Delphi [-]
//Creo la clase TMsj
 TMsj = class(TThread)
      protected
        procedure Execute; override;
      end;
    
    var
      //Declaramos una variable del tipo TMsj
      ChecarMsj:TMsj;
    
    //Procedimiento de la clase ¿Cuando se lo llama, ó Donde lo llamamos?
    procedure Tmsj.Execute;
    var
      Msg : String;
    begin
     with form1 do
     begin
      if not IdTCPClient1.Connected then
        exit;
    
      Msg := IdTCPClient1.ReadLn('');
    
      if Msg <> '' then
        if Msg[1] <> '@' then
          begin
          { Not a system command }
            memLines.Lines.Add(Msg);
          end
     end;
    end;
    
    //Creamos un objeto de la clase TMsj
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
 //¿Por que creamos al objeto con un parámetro booleano?
    ChecarMsj:=TMsj.Create(false);
    end;
 
 //¿dónde llamamos a Execute?
Responder Con Cita
  #7  
Antiguo 15-09-2005
johncook johncook is offline
Miembro
 
Registrado: oct 2004
Posts: 65
Poder: 20
johncook Va por buen camino
Cita:
/¿Por que creamos al objeto con un parámetro booleano?
ChecarMsj:=TMsj.Create(false);
end;

//¿dónde llamamos a Execute?
Cuando creas el hilo, le indicas al mismo como crearse... Si el parámetro es false (CreateSuspended), significa que el hilo ejecuta una vez creado.
Creo que eso también responde tu pregunta sobre "donde se invoca el método Execute?".
Saludos.
Responder Con Cita
  #8  
Antiguo 15-09-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Mil gracias ahora me voy a probarlo y bueno ademas ya se de donde leer sobre estos componetes. Con esto tengo trabajo hasta el fin de semana gracias a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 02:29:32.


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