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 18-02-2008
gallipi gallipi is offline
Miembro
 
Registrado: abr 2007
Posts: 29
Poder: 0
gallipi Va por buen camino
Problema con servidor TCP

hola,
estoy haciendo un servidor TCP con componente indy para delphi y en principio me funciona bastente bien.
El problema que tengo es que cuando me llegan muchas peticiones rapidas por parte de un solo cliente al final me lanza un error y el programa deja de ejecutarse " Acces violaton at adress 0000000 ..." y no se a que es devido.
este es el trozo de codigo que se ejecuta cuando me llega una peticion por parte del cliente

Código Delphi [-]
procedure TModuleManager.tcpServerExecute(AThread: TIdPeerThread);
var
  mensaje : string;

begin
  try
   mensaje:=  AThread.Connection.ReadLn; // leer domando que me envian
   if mensaje<> ' ' then
     begin
       mensaje := mensaje + ',Lagun.dll';
       EjecutarTarea(Pchar(mensaje)); // que haga lo que tenga que hacer
     end;
  except
    raise exception.Create('Server');
  end;
end;

Última edición por dec fecha: 18-02-2008 a las 12:50:10.
Responder Con Cita
  #2  
Antiguo 18-02-2008
gallipi gallipi is offline
Miembro
 
Registrado: abr 2007
Posts: 29
Poder: 0
gallipi Va por buen camino
supongo que es porque el readln es bloqueante y hasta recibir un mensaje se queda esperando, entonces, si un cliente se desconecta, el hilo esta en el readln y al perder el socket dara el error ese.

La duda que me queda es que es lo que tengo que hacer cuando un cliente se desconecte, si tengo que lieberar el hilo o simplemente tengo que hacer un exit.

procedure TModuleManager.tcpServerExecute(AThread: TIdPeerThread);
begin
try
mensaje := AThread.Connection.ReadLn;
if mezua <> ' ' then
begin
if mensaje = 'fin' then exit; // DUDA, SI EL CLIENTE DESCONECTA SIMPLEMENTE TENGO QUE HACER UN EXIT O TENGO QUE LIBERAR EL HILO??
mensaje:=mensaje + ',Lagun.dll';
Athread.Synchronize(TareaThread);
end;
except
raise exception.Create('Server');
end;
end;
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema IP dinamica cn Servidor Control Remoto Namaris Redes 8 29-01-2007 23:22:48
Problema de conexión al cambiar de servidor Garfio Firebird e Interbase 5 06-12-2006 22:43:06
¿que problema hubo con el servidor? Robert01 Varios 6 26-09-2006 22:50:13
Tengo un problema con la conexión al servidor subzero Firebird e Interbase 3 27-01-2004 18:25:14
Problema al desconectar del servidor. albion Providers 0 21-10-2003 17:31:07


La franja horaria es GMT +2. Ahora son las 21:36:06.


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