Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problema con TcpServer.BlockMode (https://www.clubdelphi.com/foros/showthread.php?t=16708)

AGAG4 08-12-2004 18:55:19

Problema con TcpServer.BlockMode
 
Tengo una aplicacion en donde envia y recibe mensajes por tcp/sockets, uso los componentes TcpServer y TcpClient, el problema que tengo es cuando recibo los mensajes por medio del evento OnAccept del TcpServer, al final del evento mando llamar a un procedimiento en donde me guardara el texto en un ibDataset, pero me marca un error:
ttemp: field SucD no found
Me deja de marcar este mensaje si desbloqueo el TcpServer por ejemplo:
TcpServer.BlockMode:=bmNonBlocking que por defecto tenía bmThreadBlocking , y después de llamar el procedimiento de guardado vuelvo a asignar bmThreadBlocking,pero si hago esto me deja de recibir mensajes, pongo el código ejemplo:
Código Delphi [-]
....
  TcpServer.BlockMode := bmNonBlocking;
  //Procedimiento de Guardado del Mensaje en un ibDataset
  LeerMensaje(msRemoto);
  TcpServer.BlockMode:=bmThreadBlocking;

Cual es la forma correcta de Guardar el mensaje en un ibdataset sin tener que interrumpir el RECIBIDO de los mensajes del TcpServer????

Agradezco cualquier ayuda.

AGAG4 09-12-2004 19:14:17

La Respuesta es....
 
De tanto buscarle ya le encontre a mi problema, tengo un memo donde recibo los mensajes que me envian, dentro del evento OnChange del mismo mando a llamar un procedimiento para guardar el mensaje al ibDataset del cual deje la siguiente condición:
Código Delphi [-]
 if Nuevo then begin
    LeerMensaje(msRemoto);
    Nuevo:=false;
  end;

En el procedimiento de Recibir mensajes declaro la variable Nuevo:=true, por cada mensaje que entra manda a guardarlo, pero esto no es todo, después de enviar el Cliente el Mensaje puse una pausa entre los envios:
Código Delphi [-]
    TcpClient.Disconnect;
    Sleep(2000);

Asi mandará todos los mensajes por Tiempo, de otra forma si no ponen la pausa no enviará todos ¿Porque? Desconozco la respuesta, desconozco el comportamiento de envio del TCPClient y de Recepción del TCPServer.

Espero le sirva esto a alguien.
Saludos.

AGAG4 09-12-2004 20:41:12

Ahora esto....
 
Ahora mi problema es que al momento de enviarse mensajes entre los clientes a la ves no me guarda todos los mensajes recibidos, los guarda todos siempre y cuando Envia Primero UNO y al Terminar Envia Después el otro.

Que estará pasando????
Agradezco cualquier opinión.


La franja horaria es GMT +2. Ahora son las 12:32:27.

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