Pregunta

Así que estoy usando tidhttp para hacer las peticiones POST. cuando intento para establecer ConnectTimeout cualquier período de tiempo que no tiene ningún efecto. Todavía esperar ~ 5 segundos antes de que consiga una excepción. Gracias de antemano!

¿Fue útil?

Solución

Si se está conectando a un nombre de host en lugar de una dirección IP, el nombre de host tiene que ser resuelto a través de una IP una búsqueda de DNS, que puede tomar tiempo, especialmente si el nombre de host no se ha almacenado en caché por el sistema operativo todavía. La propiedad ConnectTimeout no da cuenta de que el tiempo.

Además, cuando ConnectTimeout no es cero, o si se está utilizando TIdAntiFreeze, Indy tiene que usar un subproceso de trabajo interno para llevar a cabo la () llamada de conexión API socket real al servidor. Comenzar un nuevo hilo puede llevar algún tiempo, dependiendo de los recursos disponibles del sistema en ese momento. ConnectTimeout no da cuenta de que el tiempo, tampoco.

La implementación actual de ConnectTimeout se aplica sólo a la API de socket real llamada connect () en sí, no a cualquier parte del trabajo extra que se necesita para llegar a ese punto. Por lo tanto, si usted tiene un segundo conjunto de valores ConnectTimeout 5, es posible hanve más de 5 segundos pasan antes TIdTCPClient.Connect () salidas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top