Hola vejerf,
Atendiendo a lo que me comentas, mi recomendación seria que cada cliente conecte al servidor, solo, cuando tenga algo para enviar al mismo.
El protocolo sería algo así:
- El cliente detecta cambios para enviar al servidor.
- Conecta al servidor.
- Establece el "ReadTimeout".
- Envía la información al servidor.
- Espera el "OK" del servidor
- Desconecta del servidor.
Por otro lado, el servidor al recibir la conexión también debe establecer la propiedad "ReadTimeout" de la conexión, para evitar que se queden hilos colgados en el servidor (cuando un cliente pierda la conexión de forma inesperada).
Sin querer me he encontrado un ejemplo de idTCPClient que casualmente utiliza un hilo secundario en la aplicación cliente.
Te lo dejo
aquí por si te interesa verlo.
Realmente todo esto depende mucho de la estructuración de tu proyecto, de la cantidad de "paquetes" a enviar al servidor, de lo que el servidor tenga que hacer con esos paquetes, etc.
Espero que te ayude.
Un saludo.