Socket quand tu nous tiens

Eléphanteau du PHP | 14 Messages

09 févr. 2006, 15:07

Bonjour la communauté :D :D

voilà j'ai un problème :lol: je pense que vous vous en doutez puisque je post dans cet endroit :) :)

voilà le code
<?
flush();

function WakeOnLan($addr, $mac)
{
 $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!\n";
  echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s));
 }
 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) . "\n";
  }
  $e = socket_sendto($s, $msg, strlen($msg), 0, $addr, 2050);
  socket_close($s);
  echo "Magic Packet sent (".$e.") to ".$addr.", MAC=".$mac;
 }
}
$bdd=mysql_connect("localhost","root","");
mysql_select_db("plop",$bdd);

$requete = "SELECT IP FROM postes WHERE NAME =\"".$_POST['pc']."\" GROUP BY IP";
$result = mysql_query ($requete);
while ($ress = mysql_fetch_array($result)) {
	$adrip = $ress['IP'];
}

$req = "SELECT MAC FROM postes WHERE NAME =\"".$_POST['pc']."\" GROUP BY MAC";
$res = mysql_query ($req);
while ($re = mysql_fetch_array($res)) {
	$adrmac = $re['MAC'];
}

WakeOnLan($adrip, $adrmac)
?>
et voici l'erreur :

Code : Tout sélectionner

Warning: socket_set_option() [function.socket-set-option]: unable to set socket option [0]: Un argument non valide a été fourni. in D:\Program Files\xampp\htdocs\plop\wol2.php on line 36 Magic Packet sent (102) to 172.16.214.3, MAC=00-30-F1-13-56-59
je vois pas du tout le probleme je buche sur ce code depuis un moment et je fais appelle a vous maintenant car j'ai le cerveau en feu :lol: :lol:


merci d'avance

:: CoiKispiCs ::
:: CoiKispiCs ::

La Vie est une fête !!

HD
Mammouth du PHP | 1181 Messages

09 févr. 2006, 15:28

Laquelle est la ligne 36?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 14 Messages

09 févr. 2006, 15:29

$opt_ret =  socket_set_option($s, 1, 6, TRUE); 
celle-ci :lol:
:: CoiKispiCs ::

La Vie est une fête !!

Mammouth du PHP | 505 Messages

09 févr. 2006, 15:44

c'est pas très pratique de mettre les valeurs au lieu des constantes....
A forciori quand ca marche pas et que d'autre doivent regarder...

Eléphanteau du PHP | 14 Messages

09 févr. 2006, 15:52

la fonction WakeOnLan n'est pas de moi je l'ai trouvé sur php.net j'ai beau avoir regardé sous tout les sens je ne vois pas du tout ce qui ne marche pas
:: CoiKispiCs ::

La Vie est une fête !!

Eléphanteau du PHP | 14 Messages

09 févr. 2006, 16:36

c'est pas très pratique de mettre les valeurs au lieu des constantes....
A forciori quand ca marche pas et que d'autre doivent regarder...
tu avais raison il fallait mettre les constante plutot que les valeurs donc j'ai changé
$opt_ret =  socket_set_option($s, 1, 6, TRUE);
Par :
  $opt_ret =  socket_set_option($s, SOL_SOCKET, SO_REUSEADDR, TRUE);
et ça marche maintenant :D
:: CoiKispiCs ::

La Vie est une fête !!