Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con INDY (https://www.clubdelphi.com/foros/showthread.php?t=22483)

m@kio 16-06-2005 19:35:13

Problemas con INDY
 
Estoy haciendo una aplicacion la cual se conecta a un servidor k yo hice, los hago con TidTCPClient y TidTCPServer, al inciar la aplicacion on el oncreate me conecto de la sig. forma:
Código:

  with datos do
  begin
  if cliente.Connected then
    Application.MessageBox('Actualmente conectado con el servidor','Aviso',mb_ok+mb_iconinformation)
  else
  begin
    try
    cliente.Connect;
    except
    Application.MessageBox('No se ha podido conectar con el servidor','Aviso',mb_ok+mb_iconwarning);
    application.Terminate;
    end;
  end;
  Cliente.WriteLn(inttostr(0));
  hora:=cliente.ReadLn;
  DecodeTime(strtotime(hora), Hour, Min, Sec, MSec);
  Cliente.WriteLn(inttostr(1));
  fecha:=cliente.ReadLn;
  end;

eso si me lo hace bien.

Pero en otra forma que es un checador en el evento OnActivate vuelvo a pedir los mismos datos el servidor de la sig. forma:
Código:

  with datos do
  begin
  if cliente.Connected=false then
    Application.MessageBox('No hay conexion con el servidor','Aviso',mb_ok+mb_iconinformation)
  else
  begin
    Cliente.WriteLn(inttostr(0));
    hora:=cliente.ReadLn;
    DecodeTime(strtotime(hora), Hour, Min, Sec, MSec);
    Cliente.WriteLn(inttostr(1));
    fecha:=cliente.ReadLn;
  end;
  end;

pero en la linea hora:=cliente.ReadLn; se traba y ya no hace nada yo no le veo nada raro al codigo, pero no lo he podido reparar, espero y me puedan ayudar.

El TidTCPClient lo tengo en un DataModule.

Crandel 17-06-2005 07:59:01

Puede estar ocurriendo que el servidor no te conteste la segunda vez.

Si no lo hace queda esperando una respuesta y por eso se te traba

Suerte

jachguate 17-06-2005 15:45:27

Lo que ha dicho crandel es correcto, habrá que ver el flujo y algo de código en el server.

Hasta luego.

;)

m@kio 17-06-2005 16:03:25

Por el momento...
 
Por el momento lo soluciones poniendo un TidTCPClient en cada forma k lo vaya a utilizar, pero yo solamente kiero tener uno en el DataModule y con ese mandar pedir la informacion, como puedo saber si el servidor espera una respuesta? o como puedo cancelar esa peticion para hacer otra?

jachguate 17-06-2005 17:39:11

Cita:

Empezado por m@kio
como puedo saber si el servidor espera una respuesta?

Cita:

Empezado por jachguate
habrá que ver el flujo y algo de código en el server.

Creí que ya habia queado claro... :confused:

Crandel 18-06-2005 04:50:27

Todos los programas cliente servidor, son como una conversación.

Donde cada uno hace una pregunta (dado un codigo y sus paramentros) y el otro interpreta esa pregunta (por su codigo) y devuelve la respuesta.

Ahora, el primero, recibe la respuesta y ejecuta la acción que desee.

Ese es el hilo principal de todos los programas.

Cita:

Empezado por m@kio
como puedo saber si el servidor espera una respuesta?

Depende completamente de tu proceso.

Si escribes el codigo de la conversación podremos analizarlo y sugerirte algo.

m@kio 20-06-2005 15:58:28

Este es el codigo...
 
Servidor:

Cuando se Conecta;

Código:

AThread.Connection.WriteLn(timetostr(now));
 listbox2.Items.Insert(0,Athread.Connection.ReadLn);

Cuando se ejecuta:

Código:

procedure TForm1.ServidorExecute(AThread: TIdPeerThread);
 var
        Command : String;
 begin
 listbox1.Items.Insert(0,Athread.Connection.ReadLn+'- Hora de Ejecucion: '+FormatDateTime('hh:nn:ss',now));
 Command := AThread.Connection.ReadLn;
 if command='0' then
  AThread.Connection.WriteLn(FormatDateTime('hh:nn:ss',now))
 else if command='1' then
  AThread.Connection.WriteLn(FormatDateTime('dd/mm/yyyy',date))
 else if command='2' then
  AThread.Connection.WriteLn('HOLA cliente como estas');
 
 end;

Lo del cliente ya puse como me conecto y como hago la petición al servidor, espero que me pueda ayudar...


La franja horaria es GMT +2. Ahora son las 22:31:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi