PDA

Ver la Versión Completa : Problema con TcpServer.BlockMode


AGAG4
08-12-2004, 18:55:19
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:

....
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
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:

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:

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 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.