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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Question Indy: Connection clode gracefully. Completas causas y solución ?

Hola,

Perdón por abrir esto como un hilo nuevo cuando no solo hay hilos antiguos sino que hace pocas horas se acaba de cerrar uno al respecto (vease http://www.clubdelphi.com/foros/showthread.php?t=53705); pero, en esos hilos el objetivo fué resolver el problema de alguién y creo en cambio que el problema amerita una discusión general

Yo también me he encontrado muy recientemente con el error "Connection closed gracefully" (tengo Delphi 2007 Update 3 con Indy 10)

Una investigación en Internet indica que el error es frecuente, tan frecuente que incluso un miembro del equipo Indy escribió una larga explicación al respecto, la cual puede consultarse aquí:

http://www.swissdelphicenter.ch/en/showarticle.php?id=1

Cuando se pregunta por este problema, quienes contestan usualmente mandan a leer esa nota; pero, hay varios inconvenientes con ella que creo ameritan un hilo especial:

La explicación es teóricamente extensa y se puede decir que buena; pero, desde el punto de vista práctico, no explica los puntos más importantes que necesitamos tener en cuenta los programadores.

Antes todo, aclaro que el principal consejo que se dá es para que el mensaje no moleste cuando se está depurando; pero, en mi caso, y supongo que a otros también les ha pasado, el problema no lo tenía al depurar, sino en la versión "productiva".

Un punto clave que no explica es como detectar la verdadera causa del error. Veamos :

El caso en que se dispare en un servidor, puede ser un verdadero error, o una exception. Yo no le experimentado; pero, la nota no dice como saber cuando es un error y cuando una excepción.

El caso de que el mensaje se dispare en un cliente (en mi caso se dispara al llamar al método Get de TIdHTTP), dice que corresponde a un verdadero error y debe ser manejado atrapandolo; sin embargo, no explica exactamente que causa el error.

En ambos casos, la explicación general es que se trata de que al menos uno de los dos equipo cierra la conexión, y que en algunos protocolos es algo normal, parte de su propia convención.

En mi caso, esa explicación general no la encuentro aplicable porque de casi 100 llamadas distintas al servidor, ya he probado la gran mayoría y solo en una se presenta, y con mucha frecuencia. Si correspondiera a esa explicación debería ocurrir en bastantes más llamadas.

Concluyo que en mi caso es un verdadero error; pero, por qué ?, en cuales circunstancias ?. Por qué el comando a veces funciona y a veces no (en especial siendo uno en que la operación es corta) ?. La nota no dá ninguna pista clara para responder esto.

Ahora bien, tampoco explica como debe exactamente manejarse el error.

Yo he implementado una solución usando un contador de intentos; así, si se produce el error, incremento el contador y repito la llamada. Logicamente si excede el máximo de intentos (lo ajusté a 4), lo tomó como un problema definitivo y reporto al usuario.

Este enfoque me ha funcionado muy bien; pero, por un lado, en la llamada del problema, el tiempo de respuesta no es bueno (claramente, con frecuencia se necesitan varios intentos), por otro lado, ese tipo de solución a "prueba y error" no me parece confiable, ni presentable desde
el punto de vista técnico.

De hecho, en el fondo es similar a la solución dada en otro hilo usando en "delay" entre llamadas.

En otros hilos y notas al respecto, he visto mencionar como causa la versión de Indy; pero no parece ser algo directamente relacioando con la versión.

Ojalá puedan comentar al respecto, a ver si puede aclararse el tema.

Última edición por rolandoj fecha: 28-02-2008 a las 20:58:40.
Responder Con Cita
 



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
Que Significa el Error "connection Closed Gracefully" en los Indys ???? AGAG4 Varios 6 26-03-2009 23:01:59
Como reemplazar Indy 10 por Indy 9 en Delphi 2007 ? rolandoj Internet 0 13-02-2008 18:44:31
Debate: Causas del fracaso de Kylix rretamar Debates 22 13-03-2007 04:48:15
pasar palabras completas de un memo a otro Cosgaya Conexión con bases de datos 1 05-06-2005 15:41:07
Imprimir tablas completas en Rave Oreades Impresión 1 07-06-2004 07:43:40


La franja horaria es GMT +2. Ahora son las 01:01: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