Avatar billede vels Nybegynder
21. oktober 2008 - 21:55 Der er 7 kommentarer og
1 løsning

debug socket

Hej

Jeg har et script så jeg fint kan køre lokalt på min egen apache+php5. Men når jeg kaster det på mit webhotel fejler det, med fejlen "Magic packet failed!" (det er en fejl beskrivelse fra scriptet)

Nu er jeg ikke så skarp til det med socks... er der nogle der kan fortælle mig om det er php setting på mit webhotel der gør det eller hvad der kan være galt?

Her min kode:

<?
# Wake on LAN - (c) HotKey@spr.at, upgraded by Murzik
# Modified by Allan Barizo http://www.hackernotcracker.com
flush();
function WakeOnLan($addr, $mac,$socket_number) {
  $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));
    return FALSE;
    }
  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";
      return FALSE;
      }
    if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {
      echo "Magic Packet sent successfully!";
      socket_close($s);
      return TRUE;
      }
    else {
      echo "Magic packet failed!";
      return FALSE;
      }
    }
  }
// Port number where the computer is listening. Usually, any number between 1-50000 will do. Normally people choose 7 or 9.
$socket_number = "7";
// MAC Address of the listening computer's network device
$mac_addy = "00:12:4G:SF:12:13";
// IP address of the listening computer. Input the domain name if you are using a hostname (like when under Dynamic DNS/IP)
$ip_addy = "XX.XXX.XX.XXX";
WakeOnLan($ip_addy, $mac_addy,$socket_number)
?>
Avatar billede vels Nybegynder
21. oktober 2008 - 21:58 #1
Nå jeg kigger på phpinfo så er der godt nok 5.2.5 mit webhotel bruger og lokalt bruger jeg 5.2.6

Når jeg søge på socket så får jeg mere eller mindre samme resultat begge steder.
Avatar billede coderdk Praktikant
21. oktober 2008 - 22:14 #2
if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {

bør være

if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number) != -1) {

da socket_sendto returnerer antallet af bytes sendt...

socket_set_option($s, 1, 6, TRUE);

prøv at bruge:

socket_set_option($s, SOL_SOCKET, SO_BROADCAST, 1);

evt. i din "Magic packet failed", prøv at skrive socket_last_error($s) ud og se om der er noget - Måske har du bare ikke lov til at bruge sockets på din webhost? Bruger du den korrekte eksterne IP for din router? Måske er port 7 ikke en god idé - Porte under 1024 er "priviligerede" - Det virker med andre - Jeg bruger f.eks. en port over 30000...
Avatar billede erikjacobsen Ekspert
21. oktober 2008 - 22:14 #3
Hvad er det for en MAC-adresse ?
Avatar billede coderdk Praktikant
21. oktober 2008 - 22:15 #4
Spm: Din MAC-adresse er bare noget volapyk du har skrevet her, ikke? For den er da ikke gyldig ;)
Avatar billede vels Nybegynder
22. oktober 2008 - 07:11 #5
Hej

Jo det er bare en "dummy" mac adresse.
Jeg vil lige forsøge nogle af de ting du forslår... men som sagt scriptet virker fint når jeg køre det på min lokal net... vuuupti så starter computeren.

/Jesper
Avatar billede vels Nybegynder
22. oktober 2008 - 08:24 #6
Hej

Når jeg kommer hjem skal jeg lige have sat min router op...
For efter jeg prøvede at lave dine rettelser (coderdk) så får jeg ihvertfald:
"Magic Packet sent successfully!"

/Jesper
Avatar billede vels Nybegynder
04. april 2010 - 07:47 #7
>> coderdk smider du lige et svar?
Avatar billede coderdk Praktikant
04. april 2010 - 11:48 #8
ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester