Un par de cosillas:
1 - Aquí tienes un código que hace lo que quieres. Pero ten en cuenta que si el puerto no esta abierto, puede tardar un poco de tiempo en terminar la función. Así que, o tienes paciencia o usas threads
http://www.clubdelphi.com/foros/show...85&postcount=4
2 - En ese bucle que pones veo que pones active a TRUE pero no veo que lo pongas a FALSE.
3 - Si estas usando sockets asíncronos el try except de poco te va a servir.