Autor Zpráva
holi
Profil
Zdravím ve spolek,
mám script na testování zda je PC online.
 
function online_pc ($ip, 80){
  $fp = @fsockopen($ip, $port, $errno, $errstr, 3);
  if(!$fp){
  return "Offline !";
  }
  else{return "Online !";}
}


Jenže nastává problém u toho když je člověk schovaný za routerem (což je asi většina uživatelů internetu). Tak sem se chtěl zeptat jestli jde nějak odeslat na router dotaz na broadcast který by hledat určitou mac adressu a když ji našel tak sní zkusil navázat socket spojení jako je výše. Logicky mě napadá že by se to rovnou mohlo udělat tak že pokud ji nenajde tak je offline a pokud najde tak je online (vypnutý/ zapnutý). Takže něco na spůsob :
    if(($s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) == false) exit;  // otevře UDP socket
    if(socket_set_option($s, SOL_SOCKET, SO_BROADCAST, true) == false) exit; // nastaví jako broadcast
    $msg = socket_connect($s, $MAC);
    if(socket_sendto($s, $msg, strlen($msg), 0, $ip, $port) == false) exit; // odešle Magic Packet na danou IP a UDP port
    socket_close($s);                 // uzavření socketu
    echo 'Počítač je online';
  }


Vím že toto fungovat nebude, alepoň to oděslání $msg, ale je to pro představu co bych chtěl

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0