Ok, du hängst also in der Konsole, da brauchst du natürlich eine Schleife. Ich würde dort aber die Schleife unabhängig von den Sockets machen und nur so lange laufen lassen, bis die gesamte Verarbeitung abgeschlossen ist. Entweder du setzt ein Event (TEvent oder direkt per
WinAPI) oder du nimmst den einfachen Weg über eine globale Variable. Innerhalb der Schleife ist dein bisheriger Schleifeninhalt schon ok. Ich würde aber die Sleep() Zeit höher setzen. Eine 1 Millisekunden Pause (bzw. Abgabe) bringt nicht viel. Eine Abgabe von 50 bis 100 ms sind wohl besser.