PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Keine Erlaubnis für Broadcast WakeOnLan Paket zu senden



LeoManiac
17-02-2006, 21:01
Servus,

hat jemand ne Ahnung warum mir PHP verbietet ein WakeOnLan Packet an die Broadcast Addresse zu schicken?



Warning: fsockopen() [function.fsockopen]: unable to connect to udp://192.168.0.255:2304 (Keine Berechtigung) in /opt/lampp/htdocs/tmp/WakeOnLan.class.php on line 22

Fatal error: Uncaught exception 'WOLNotConnected' with message 'Keine Berechtigung' in /opt/lampp/htdocs/tmp/WakeOnLan.class.php:26 Stack trace: #0 /opt/lampp/htdocs/tmp/WakeOnLan.class.php(13): WakeOnLan->connect('192.168.0.255', 2304) #1 /opt/lampp/htdocs/tmp/WakeOnLan.class.php(4): WakeOnLan->wakeup('192.168.0.255', '00:0D:87:B4:0E:...') #2 {main} thrown in /opt/lampp/htdocs/tmp/WakeOnLan.class.php on line 26

quinte17
19-02-2006, 10:40
schickt WOL die pakete wirklich an die Broadcast IP? ich glaube eher nicht..
die IP ist doch bei WOL egal, wichtig ist doch nur die MAC oder nicht?

greetz

LeoManiac
19-02-2006, 14:30
Wohin willst du es sonst schicken? Wenn der Rechner erst durch dieses Paket aufwachen soll?


Magic Packet

Die Netzwerkkarte wartet auf ein so genanntes Magic Packet (Schutzmarke von AMD), bei dessen Empfang der Rechner eingeschaltet wird.

Das Datenpaket ist entweder direkt an die Netzwerkkarte adressiert oder wird als Broadcast verschickt. Es enthält die Hexadezimal-Folge FFFFFFFFFFFF; unmittelbar danach erscheint die ununterbrochene 16-malige Wiederholung der MAC-Adresse der Netzwerkkarte. Dieser Inhalt kann in ein beliebiges Paket (z. B. IP, IPX) verpackt sein. Es existieren viele Software-Tools, um solche Pakete zu versenden.

Ich schicks als UDP an die Broadcast Addresse

quinte17
19-02-2006, 19:41
ich verstehe was du meinst, aber für WOL ist die IP-Adresse vollkommen egal. da ist eben NUR die MAC entscheidend. steht ja auch da, entweder an die MAC des Clients den du aufwecken willst, oder die Broadcast-MAC-Adresse welche aus 12 f besteht.

greetz

LeoManiac
19-02-2006, 19:59
Google mal bitte nach WOL PHP Klassen....
Alle schicken das Magic Packet an die Broadcast unter Windows funktioniert das komischerweise ... nur unter Linux hab ich keine Berechtigung.

LeoManiac
19-02-2006, 20:04
Hier bitteschön das Script soll angeblich funktionieren ... ich habs mir nur als Klasse geschireben

http://www.php.de/forum/viewtopic.php?t=36929&highlight=wake

quinte17
19-02-2006, 21:50
ja versuchs doch mal mit einer normalen ip..



<?php
function wakeup ($mac_addr, $broadcast) {

if (!$fp = fsockopen('udp://' . $broadcast, 2304, $errno, $errstr, 2))
return false;

$mac_hex = preg_replace('=[^a-f0-9]=i', '', $mac_addr);

$mac_bin = pack('H12', $mac_hex);

$data = str_repeat("\xFF", 6) . str_repeat($mac_bin, 16);

fputs($fp, $data);
fclose($fp);
return true;
}

// die broadcast-mac kannst durch den einen rechner ersetzen...
wakeup("FF:FF:FF:FF:FF:FF","192.168.0.80");

?>


probiers halt mal...

greetz