Club Delphi  
    Paypal   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

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 08-08-2013
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 23
ASAPLTDA Va por buen camino
Talking Cliente/server

Cita:
Empezado por cointec Ver Mensaje
Hola, no sé si te estará ocurriendo que se bloquee la aplicación, ya que no puedes manipular desde un thread componentes de VCL, y el evento on execute se lanza desde un thread. En el ejemplo que has mostrado, el evento onexecute se ejecuta desde un hilo que se crea para la conexión y no deberías acceder a Memo1. Por otro lado, no sirve de nada comprobar Código Delphi [-]AContext.Connection.Connected

, ya que si no hay conexión, no se lanza el evento onexecute.

Yo utilizo el sistema que te muestro a continuación ( aunque adaptado a tu ejemplo) en sistemas que tienen conectadas muchas máquinas por sockets y funciona a la perfección y sin problemas con volúmenes altos de mensajes 24x7x365. Sólo tienes que tener la precaución de sincronizar el thread principal de la aplicación con el thread de la conexión, cuando uno se tenga que comunicar con el otro para procesar los mensajes recibidos y para enviar mensajes, siempre que el procesamiento de los datos recibidos los realices en el thread principal.

Código:
Código Delphi [-]procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); var Command: string;     Size: LongInt;     textoRecibido: string; begin    Command := AContext.Connection.Socket.ReadLn;    Size := AContext.Connection.IOHandler.ReadLongInt(true);    textoRecibido := AContext.Connection.IOHandler.ReadString(Size);    AContext.Connection.IOHandler.WriteLn( 'Enviado' );             TTCPServidorDatosRecibidos.DatosRecibidos( AContext, Command, textoRecibido);     end;  procedure TForm1.ProcesaDatosRecibidos( const AIP: string; const ACommand: string; const ATexto: string ); begin    Memo1.Lines.Add( DateTimeToStr(now) + ' - ' + AIP + ' : ' + Command );  end Yo utilizo     TTCPServidorDatosRecibidos = class(TIdNotify)    private       FContext: TIdContext;       FCommand: string;       FDatos: string;    protected       procedure DoNotify; override;    public       constructor Create( AContext: TIdContext; const ACommand: string; const ADatos: string ); reintroduce;       class procedure DatosRecibidos( AContext: TIdContext; const ACommand: string; const ADatos: string );    end;  constructorTTCPServidorDatosRecibidos.Create( AContext: TIdContext; const ACommand: string; const ADatos: string); begin    FContext  := AContext;    FCommand  := ACommand;    FDatos    := ADatos;    inherited Create; end;  procedure TTCPServidorDatosRecibidos.DoNotify; begin    inherited;    Form1.ProcesaDatosRecibidos( FContext.Binding.PeerIP, FCommand, FDatos ); end;  class procedure TTCPServidorDatosRecibidos.DatosRecibidos( AContext: TIdContext; const ACommand: string; const ADatos: string); begin    TTCPServidorDatosRecibidos.Create( AContext, ACommand, ADatos ).Notify; end;
Hola Trate de enterder este ejemplo, pero mi conocimiento es demasiado basico, podras colocarcar un ejemplo de cliente/server para dummies
Por ejemplo que unidades debo adicionar para colocar el codigo
TTCPServidorDatosRecibidos = class(TIdNotify) como lo hace en la parte Yo utilizo

si es demasiado pedir ?


lo que trato de hacer es que una maquina1 se conecte a otra maquina 2, la mquina 1 envie un mensaje que corresponde a un nombre de documento padre , la maquina 2 debe responder con una lista de nombre de documentos el cual debe recibir la maquina 1 . Esto lo hago porque la maquina 1 tiene en su dioco duro una serie de archivos pdf que se deben imprimir en l maquina 1 , ya que la maquina 2 envia a imprimir en forma remota los documento debido al tamano de estos se demora demasiado y por tratamos de usar la alterntiva de tener los documentos en forma local y no remota

gracias por sus comentarios y observaciones

Última edición por ASAPLTDA fecha: 08-08-2013 a las 05:46:45.
Responder Con Cita
 


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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Server TCP con Indy desde una PC en Red. FENIXadr Internet 5 03-07-2011 16:53:48
Problema al detener Indy TCP Server anakin1981 Varios 0 26-07-2010 20:31:09
Problema FTP Server con Indy jusnjosesch Internet 1 24-07-2008 03:05:02
Time Server Indy pablonill Servers 0 02-04-2008 14:19:52
Indy TCP Server: Uso de CPU 100% tras 5 min JARivera Internet 12 28-12-2007 15:41:27


La franja horaria es GMT +2. Ahora son las 01:04:37.


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
Copyright 1996-2007 Club Delphi