« Wake on LAN durchführen
Wake on LAN ist ein Standard zum Starten eines deaktivierten Rechners über eine kompatible Netzwerkkarte. Dazu wird lediglich ein bestimmtes Paket im Netzwerk gesendet; mit C# lässt sich das beispielsweise so lösen:
public static class WakeOnLan {
public static void SendMagicPacket(byte[] macAddress) {
using(UdpClient udpClient = new()) {
udpClient.Connect(IPAddress.Broadcast, 9);
byte[] magicPacket = new byte[(6 + (16 * 6))];
for(int i = 0; i < 6; i++) {
magicPacket[i] = 0xFF;
}
for(int i = 1; i <= 16; i++) {
for(int j = 0; j < 6; j++) {
magicPacket[(i * 6) + j] = macAddress[j];
}
}
udpClient.Send(magicPacket, magicPacket.Length);
}
}
public static void SendMagicPacket(string macAddress) {
SendMagicPacket(macAddress
.Split(':', '-')
.Select(m => Byte.Parse(m, NumberStyles.AllowHexSpecifier))
.ToArray()
);
}
}
Das Paket enthält sechs mal den Wert FF16, gefolgt von der 16-maligen Wiederholung der MAC-Adresse und wird per Broadcast im Netzwerk versendet. Durch die Methodenüberladung wird die Übergabe der MAC-Adresse sowohl per Zeichenkette als auch per Byte-Feld ermöglicht:
WakeOnLan.SendMagicPacket("11:22:33:44:55:66");
/* – oder – */
WakeOnLan.SendMagicPacket(new byte[] {
0x11, 0x22, 0x33, 0x44, 0x55, 0x66
});