Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wake on lan
Forum PHP.pl > Forum > Gotowe rozwiązania
dnawrot
Mam pytanko. Niestety jestem początkujący jeśli chodzi o php, niemniej jednak chciałbym napisac lub zdobyć skrypt do pobudzania kompów w LAN'ie. Wiem, że do tego służy funkcja Wake on Lan, stąd taki temat postu. Nawet nie wiem od czego się zabrać i czy w ogóle da się napisać taki skrypcik. Thx z góry za odpowiedzi.
Sh4dow
Ponownie wielkie trzewia manuala otworzyly sie wypuszczajac stwora zwanego WOL, ktory zostal stworzony z czesc jego tworzyciela
  1. <?php
  2. # Wake on LAN - (c) HotKey@spr.at, upgraded by Murzik <tomurzik@inbox.ru>
  3.  
  4.  
  5. function WakeOnLan($addr, $mac)
  6. {
  7.  $addr_byte = explode(':', $mac);
  8.  $hw_addr = '';
  9.  
  10.  for ($a=0; $a < 6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
  11.  
  12.  $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
  13.  
  14.  for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr;
  15.  
  16.  // send it to the broadcast address using UDP
  17.  // SQL_BROADCAST option isn't help!!
  18.  $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  19.  if ($s == false)
  20.  {
  21. echo &#092;"Error creating socket!n\";
  22. echo &#092;"Error code is '\".socket_last_error($s).\"' - \" . socket_strerror(socket_last_error($s));
  23.  }
  24.  else
  25.  {
  26.  // setting a broadcast option to socket:
  27. $opt_ret = socket_set_option($s, 1, 6, TRUE);
  28. if($opt_ret < 0)
  29. {
  30.  echo &#092;"setsockopt() failed, error: \" . strerror($opt_ret) . \"n\";
  31. }
  32. $e = socket_sendto($s, $msg, strlen($msg), 0, $addr, 2050);
  33. socket_close($s);
  34. echo &#092;"Magic Packet sent (\".$e.\") to \".$addr.\", MAC=\".$mac;
  35.  }
  36. }
  37.  
  38. #WakeOnLan('yourIPorDomain.dyndns.org', 'your:MAC:address');
  39. #WakeOnLan('192.168.0.2', '00:30:84:2A:90:42');
  40. #WakeOnLan('192.168.1.2', '00:05:1C:10:04:05');
  41.  
  42. //if you have switch or other routing devices in LAN, sendign to
  43. // the local IP isn't helps! you need send to the broadcast address like this:
  44. WakeOnLan('192.168.1.255', '00:05:1C:10:04:05');
  45.  
  46. ?>
dnawrot
Dzięki wielkie. snitch.gif Mam jednak mały problem. Mianowicie przy wywoływaniu skryptu wyrzuca mi taki błąd.

Fatal error: Call to undefined function: socket_create() in c:\usr\krasnal\www\david\wol\index.php on line 19

czym to może być spowodowane? może to bardzo głupie pytanie, ale niestety jestem laikiem jeśli chodzi o php.
Paul
Mysle, ze masz za stare php... W manualu przy socket_create" title="Zobacz w manualu PHP" target="_manual pisze :

php 4 >= 4.1.0, php 5
dnawrot
Wszystko od nowa zainstalowałem. Apache 2, php 5, mysql 5 i nadal wywala mi ten błąd.
cos musi byc nie tak, tylko co?
Sh4dow
Zobacz czy masz odznaczony w php.ini
Cytat
extension=php_sockets.dll
lub
extension=php_sockets.so
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.