Ver Mensaje Individual
  #2  
Antiguo 29-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cita:
Empezado por rolandoj Ver Mensaje
Un punto clave que no explica es como detectar la verdadera causa del error. Veamos :
Si explica cual es la causa del error:

Cita:
Empezado por Chad Z. Hower
EIdConnClosedGracefully is an exception signaling that the connection has been closed by the other side intentionally. This is not the same as a broken connection which would cause a connection reset error. If the other side has closed the connection and the socket is read or written to, EIdConnClosedGracefully will be raised by Indy. This is similar to attempting to read or write to a file that has been closed without your knowledge.
Cita:
Empezado por rolandoj Ver Mensaje
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.
Un servidor HTTP regularmente cerrará la conexión después de cada get/post, a menos que se haya enviado una cabecera indicándole que mantenga viva la conexión... y aún así podría no hacerlo a su sola discreción. Creo que lo mejor es que hables con el administrador de dicho servidor o que repases la manera en que estas empleando el protocolo.


Cita:
Empezado por rolandoj Ver Mensaje
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.
Aún cuándo la llamada sea la misma, puede ser que algo ocurra en el servidor y no estés procesando correctamente la respuesta. Por ejemplo, un servidor podría devolver un error 500 debido a una condición interna de error e inmediatamente después cerrar la conexión.
Un cliente HTTP robusto deberá procesar correctamente todas las respuestas probables de un servidor, y no esperar tener únicamente status 200.

Cita:
Empezado por rolandoj Ver Mensaje
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.
¿con cuantas versiones de INDY has trabajado?

Yo relaciono mensajes de error "connection closed gracefully" con la versión debido a que en versiones de INDY 9 previas a la 9.0.18 (ya no logro recordar en cuales exactamente), esta excepción particular no era bien manejada internamente dentro de INDY, por lo que salía al exterior cuándo no existía realmente o era posible manejarla.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita