Ver Mensaje Individual
  #1  
Antiguo 26-08-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Reputación: 18
mcs Va por buen camino
Forzar la desconexión de un TIdTCPClient

Hola,

Tengo una aplicación que ataca varios dispositivos remotos. Estos dispositivos estan conectados a traves de conversores ethernet->serie.

Cada vez que tengo que hacer una conexión, lo que hago es crear tantos hilos como dispositivos debo leer, en cada hilo creo un TIdTCPClient, y a través del TIdTCPClient leo o escribo las ordenes necesarias.

El problema me viene que, a veces, alguna de estas conexiones no se cierran correctamente (el TIdTCPClient queda conectado). Debido a esto, y a que los conversores ethernet->serial solo admiten una conexión a la vez (y no los puedo modificar), al quedar el socket abierto pierdo totalmente la conexión con el dispositivo. En este momento, la única opción es reiniciar totalmente la aplicación.

Pero otro problema que hay es que dicha aplicación es un servicio de Windows, que corre (o debe correr) totalmente desatendida.

Entonces, sabeis alguna forma de forzar la desconexión y cierre de un TIdTCPClient? Por otra parte, voy a investigar la posibilidad de auto-reiniciar el servicio cuando más de un x% de las conexiones fallen, pero no sé si se podrá hacer...

Un saludo,

Marc
Responder Con Cita