Wie hast Du es jetzt konkret gelöst? Bei meinen Tests mit WinXP und Delphi 7 stieg die Anzahl der Handles nämlich nur bei erneutem Erzeugen der TClient-Klasse aber nicht nach den Verbdindungsversuchen.
Ich vermute mal, er verwendet jetzt die blocking Sockets. Vielleicht handelt es sich um einen Fehler in der
RTL implementation der TClientSocket Klasse, der sich erst in späteren Delphi Versionen eingeschlichen hat. Ich habe in meiner Testanwendung die Socket Instanz nicht neu erstellt und dennoch wurden die Handles geleaked. Nichtmal nach dem abschließenden Freigeben der Komponente wurden die Handles wieder geschlossen.