ALLUMER UNE MACHINE DANS UN RÉSEAU (WAKE ON LAN)

cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008 - 18 janv. 2008 à 10:45
cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008 - 20 déc. 2009 à 16:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45455-allumer-une-machine-dans-un-reseau-wake-on-lan

cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008
20 déc. 2009 à 16:01
Je suis désolé, mais cette source ne fonctionne qu'en PHP5 :-((.
Je te conseil d'ailleurs de quitter PHP4 qui me semble... disons ... un peu dépassé.
Tu insiste? Bon d'accord. Essaye ce code (sans engagement de ma part car je n'ai plus d'environnement PHP4).
Pour finir, j'ai quand même un doute à cause de tes erreurs sur la fonction fsockopen().

Bon courage et tiens nous au courant ;-)

<?php

function wake($mac){
$nic = fsockopen("udp://255.255.255.255", 9);
if( !$nic ){
fclose($nic);
return false;
}
else{
fwrite($nic, $pacquet($mac));
fclose($this->nic);
return true;
}
}

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;
}


// Remplacer 001122334455 par l'adresse mac du pc à allumer
wake('001122334455');

?>
cyberhunter Messages postés 7 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 19:53
PHP 4.3.2

Merci
cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008
15 déc. 2009 à 16:07
Quelle version de PHP utilise tu ?
cyberhunter Messages postés 7 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 16 décembre 2009
15 déc. 2009 à 15:57
Bonjour,

cette source ne marche pas sur mon réseau local
j'ai la même erreur que lassie14

Warning: fsockopen(): php_hostconnect: connect failed in /var/www/html/applications/gestion_wol/fonctions.inc.php on line 78

Warning: fsockopen(): unable to connect to 255.255.255.0:9 in /var/www/html/applications/gestion_wol/fonctions.inc.php on line 78

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/applications/gestion_wol/fonctions.inc.php on line 80

pourtant je suis bien sur un réseau local :s

A+
Arnaud
cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008
31 mai 2008 à 17:07
salut,

CHR(num) est une fonction qui revoie le caractère correspondant au chiffre "num".

Exemple chr(0x41) retourne A chr(0x42) retourne B ... etc

0xFF cad FF en hexa c'est ... 255 en décimale

chr(0xFF) me permet d'inscrire dans une chaine le caractère FF (255 de la table ascii). Caractère qui n'est pas imprimable.

Pourquoi écrire le caractère FF. Je te conseil de visité le site de wikipédia au sujet du wake on line http://fr.wikipedia.org/wiki/Wake-on-LAN .

Bon courage
Crafty57 Messages postés 4 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 7 juin 2008
31 mai 2008 à 15:22
Salut,

Je trouve ton code super intéressant.
Je viens de le tester dans une application que je développe.

Par contre je ne comprends pas cette partie :

for($i = 0; $i < 6; $i++){
$packet .= chr(0xFF);
}

A quoi sert la fonction chr ? J'ai regarder sur PHP.net mais j'ai pas compris :s
Pourquoi 0xFF ? Ca correspond à quoi ?

Merci d'avance :)
cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008
30 mai 2008 à 18:34
Génial

édite le code source et je t'édite un billet de 5 euros !
starfix2006 Messages postés 1 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 30 mai 2008
30 mai 2008 à 09:49
On arrive à des trucs pas trop mal chez Free en se creusant un peu la tête...
Pour preuve: http://wakeonwan.free.fr
cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008
5 févr. 2008 à 08:04
Cette source est destinée à un lan. Sur internet, (chez FREE par exemple) il est probable que l'adresse 255.255.255.255 soit bloquée.
Les trames ont dèjà beaucoup de mal à passer un simple routeur ... alors chez un hebergeur, je pense que cela ne peut pas aller bien loin.

@+
lassie14 Messages postés 45 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 3 mai 2010
4 févr. 2008 à 19:53
je n'arrive pas a faire marcher ta source
je l'ai essayez chez free il sont en php 4 j'ai donc enlever les private et public
ça marchait toujours pas j'ai donc supprimer la classe et enlever tous ce qui faut
et maintenantj'ai une erreur a l'ouverture du socket:
Warning: fsockopen() [function.fsockopen]: unable to connect to 255.255.255.255:9 in /mnt/129/sdc/8/1/****/wake.php on line 5

Warning: fclose(): supplied argument is not a valid stream resource in /mnt/129/sdc/8/1/******/wake.php on line 7
herrads Messages postés 1 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 30 janvier 2008
30 janv. 2008 à 18:01
je viens de le voir. Je l'ai souvent plutôt fait en batch
Merci de l'info
yuuzhantar Messages postés 1 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 22 janvier 2008
22 janv. 2008 à 21:17
Salut

je ne savais pas qu'on pouvais faire des sockets en php
tu viens de m'apprendre quelque chose

merci
valneandre Messages postés 35 Date d'inscription mardi 7 novembre 2006 Statut Membre Dernière intervention 18 septembre 2009
21 janv. 2008 à 09:00
Intéressante ressource système, ça change un peu des bouts de code frimeurs qui nous arrivent en surnombre.
merci.
Valnéandre
jantosze Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 mai 2009
19 janv. 2008 à 14:34
Salut,

Sujet intéressant. Au même titre du contrôle de l'ouverture de la socket, avant je ferai un test sur la longueur de la mac adresse en cas d'erreur de saisie.

cdt
JAN
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
18 janv. 2008 à 13:22
Au passage je te pris de m'escuser tu vérifie bien si le socket s'ouvre, j'avais pas fait attention :).
cs_olbou621 Messages postés 9 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 2 novembre 2008
18 janv. 2008 à 11:33
Bonjour,

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.

@+
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
18 janv. 2008 à 10:45
Salut,

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.

@+
Rejoignez-nous