4/5 (17 avis)
Snippet vu 17 557 fois - Téléchargée 20 fois
<?php class Wol{ private $nic; public function wake($mac){ $this->nic = fsockopen("udp://255.255.255.255", 9); if( !$this->nic ){ fclose($this->nic); return false; } else{ fwrite($this->nic, $this->pacquet($mac)); fclose($this->nic); return true; } } private function pacquet($Mac){ $packet = ""; for($i = 0; $i < 6; $i++){$packet .= chr(0xFF);} for ($j = 0; $j < 16; $j++){ for($i = 0; $i < 12; $i=$i + 2){$packet .= chr(hexdec(substr($Mac, $i, 2)));} } return $packet; } } $wol = new Wol(); // Remplacer 001122334455 par l'adresse mac du pc à allumer $wol->wake('001122334455'); ?>
18 janv. 2008 à 10:45
Cette source est intéressante et je ne me souviens pas en avoir déja vu une de ce genre ici :).
Juste deux petites remarques:
Ici: for($i = 0; $i < 6; $i++){$packet .= chr(0xFF);}
Pourquoi faire un for, c'est pas très utile il me semble qu'un $packet = "\xFF\xFF\xFF\xFF\xFF\xFF"; suffierait emplement.
Et une gestion au moin minimal des erreurs serait bien, vérification si le mac est valide, si le socket s'ouvre bien.
@+
18 janv. 2008 à 11:33
Je suis tout à fait d'accord avec toi. Il y aurait beaucoup à dire sur cette source mais son but est avant tout de donner quelque chose qui fonctionne.
Le principe du wake on lan en php si tu veux.
Charge reste à l'utilisateur d'adapter et de gérer les erreurs.
@+
18 janv. 2008 à 13:22
21 janv. 2008 à 09:00
merci.
Valnéandre
22 janv. 2008 à 21:17
je ne savais pas qu'on pouvais faire des sockets en php
tu viens de m'apprendre quelque chose
merci
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.