Sockets und eine Chat-ähnliche Lösung sind hier sicher brauchbar. Dabei wie schon gesagt keinen Broadcast senden, sondern auf dem Server einen Service laufen lassen, zu dem sich alle Anwendungs-Clients verbinden.
Code den man als Inspiration verwenden kann findet sich in der
Indy Implementierung des Telnet Protokolls, bei der ein Thread benutzt wird um auf Nachrichten des Servers zu warten, aber ich glaube hier im Forum gibt es eine Reihe schlanker Chatlösungen.
Über den Empfangsthread kann man asynchron zum Beispiel einen Eventhandler ansteuern, in dem das Client Programm dem Benutzer eine Nachricht anzeigt.