Folgende Skripte bitte testen:
function WakeOnLan($addr, $mac,$socket_number) {
$addr_byte = explode(':', $mac);
$hw_addr = '';
for ($a=0; $a <6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
$msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr;
// send it to the broadcast address using UDP
// SQL_BROADCAST option isn't help!!
$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($s == false) {
echo "Error creating socket!
";
echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
return FALSE;
} else {
// setting a broadcast option to socket:
$opt_ret = socket_set_option($s, 1, 6, TRUE);
if ($opt_ret < 0) {
echo "setsockopt() failed, error: " . strerror($opt_ret) . "
";
return FALSE;
}
if (socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {
echo "Magic Packet sent successfully!";
socket_close($s);
return TRUE;
} else {
echo "Magic packet failed!";
return FALSE;
}
}
}
// Port number where the computer is listening. Usually, any number between 1-50000 will do. Normally people choose 7 or 9.
$socket_number = "1009";
// MAC Address of the listening computer's network device
$mac_addy = "XX:XX:XX:XX:XX:XX";
// IP address of the listening computer. Input the domain name if you are using a hostname (like when under Dynamic DNS/IP)
$ip_addy = "1.1.2.3";
WakeOnLan($ip_addy, $mac_addy,$socket_number)
oder
function wakeup($mac_addr,$router_addr) {
if ($fp = fsockopen($router_addr, 9, $errno, $errstr, 4)) {
$hexchars = array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","a","b","c","d","e","f");//erlaubte Zeichen:
$data = "\xFF\xFF\xFF\xFF\xFF\xFF"; // 6 "volle" bytes (Also mit Wert 255 bzw. FF in hexadezimal)
$hexmac = "";
for ($i = 0; $i < strlen($mac_addr); $i++) { // Unntige Zeichen in der mac-adresse entfernen (also z.B. die bindestriche usw.)
if (!in_array(substr($mac_addr, $i, 1), $hexchars)) {
$mac_addr = str_replace(substr($mac_addr, $i, 1), "",
$mac_addr);
}
}
for ($i = 0; $i < 12; $i += 2) {
$hexmac .= chr(hexdec(substr($mac_addr, $i, 2)));
}
for ($i = 0; $i < 16; $i++) { // Hexadresse wird 16mal hintereinandergeschrieben
$data .= $hexmac;
}
fputs($fp, $data);
fclose($fp);
echo 'MagicPaket wurde verschickt';
return true;
}
Else {
echo "<b>Warnung: $errno</b> $errstr<br>";
return false;
}
}
$mac = 'B0DDF139C268'; //MAC Adresse
$ip = 'udp://192.168.1.255'; //oder mit IP z.B.: udp://192.168.0.1
wakeup($mac, $ip);
Und mir hier schreiben, ob variante a, oder b geht.
Geht nämlich darum ob es über socket, oder fsockopen läuft.
Swen