We decided to develop the program in Microsoft .Net C# 2003. The startup of the pc’s were realized by wake on lan. Wake on lan is a message format. It contains eight times the mac adress of the network interface from the pc which should be started. This message is then send via a udp broadcast to his network interface which has to provide a wake on lan service.
To track the status of the clients we used UDP. The clients had to send a specific package (which also contains specific information) every couple of minutes, so that the server new that the client is online. For sending commands to the client the server established a TCP connection to the clients. This was used for example for the remote monitoring. For handling the clients the server implements a class for accepting incoming connections and managed each connection in a single thread. One challenge was to create no race conditions with the implementation of multi threading.
The client software was established by a windows service, which had the advantage to run in background and to get started with windows. Also the server program provides statistical evaluations for the administrator (E.g. internet usage, cpu usage,…) via diagramms.