Mit der folgenden Funktion können WakeOnLAN-fähige Computer im lokalen Netzwerk gestartet werden.
[sourcecode language=’php‘]
* @param string $strMacAddress, e.g. ‚001111d35df8‘
* @param integer $iPort, e.g. 80
* @return boolean TRUE: packet send, FALSE: error
*/
function WakeUpComputer($strMacAddress,$iPort=2050) {
$strMAC=“;
$strMagicPaket=“;
if (strlen($strMacAddress) == 12) {
for ($x=0; $x<6; $x++) {
$strMAC .= chr(hexdec(substr($strMacAddress,($x*2),2)));
}
// Part 1: MAC-Address - Bytes 1..6
$strMagicPaket = $strMAC;
// Part 2: Bytes 7..8
$strMagicPaket .= chr(0x00);
$strMagicPaket .= chr(0x74);
// Part 3: 6 x 0xFF - Bytes 9..14
for ($x=0; $x<6; $x++) {
$strMagicPaket .= chr(0xFF);
}
// Part 4: 16 x MAC-Address - Bytes 15..110
for ($x=0; $x<16; $x++) {
$strMagicPaket .= $strMAC;
}
// Part 5: Bytes 111..116
$strMagicPaket .= chr(0x40); // 111
$strMagicPaket .= chr(0x00); // 112
$strMagicPaket .= chr(0x90); // 113
$strMagicPaket .= chr(0x90); // 114
$strMagicPaket .= chr(0x40); // 115
$strMagicPaket .= chr(0x00); // 116
// Send Paket
$fudp = fsockopen('udp://255.255.255.255',$iPort,$errno,$errstr);
if ($fudp) {
fwrite($fudp, $strMagicPaket);
fclose($fudp);
} else {
return FALSE;
}
} else {
return FALSE;
}
return TRUE;
}
if WakeUpComputer('001111d35df8') {
echo 'MagicPaket gesendet.';
} else {
echo 'MagicPaket nicht gesendet';
}
?>
[/sourcecode]
Um unter Windows die MAC-Adressen der lokalen Computer herauszufinden, kann man sie einfach von der Konsole aus anpingen und anschließend ein ‚arp -a‘ ausführen.
In folgenden Beispiel, wollen wir die MAC-Adresse vom Rechner mit der lokalen IP-Adresse 192.168.0.47 herausfinden. Zunächst pingen wir den Rechner an: ‚ping 192.168.0.47‘. Anschließend rufen wir ‚arp -a‘ auf. Nun wird uns die MAC-Adresse angezeigt, die zu der IP-Adresse gehört.
Diesen Wert, in unserem Beispiel ’00-04-75-d7-e0-92′, verwenden wir nun mit unserer Funktion WakeUpComputer(). Allerdings müssen alle Bindestriche entfernt werden. Der Aufruf wäre also: WakeUpComuter(‚000475d7e092‘);