Ich würde das verbindungslos über UDP-Broadcasts machen. Also Du schreibst ein Programm das sowohl die Funktionalität besitzt, den Rechner runterzufahren, als auch das User-Interface um andere Rechner, auf denen Das Programm läuft anzuzeigen und runterzufahren, sowie das Runterfahren abzubrechen. Kommunizieren tust Du dann indem Du UDP-Packete an die Broadcastadresse des Netzwerkes schickst und diese dann eben ohne Probleme von allen Rechner abfangen kannst.
Ich habe auf diese Weise mal einen Chat Programmiert und das Funktioniert wirklich wunderbar. Der Vorteil ist halt, dass Du Dich nicht weiter um
TCP/
IP-Connections kümmern musst und dass es in dem Sinne keinen Server gibt.