Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 09-12-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 09-12-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
Respuesta



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 20:12:56.


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