2017-02-17 48 views
0

Как говорится в этом вопросе, я использую эту функцию PHP для проверки того, отвечает ли IP-адрес на определенном порту.Какой порт для ping на машине Windows, чтобы проверить, находится ли он в сети?

function ping($host) { 

    $port = 5900; //RealVNC default port 
    $waitTimeoutInSeconds = 0.01; 

    if ($fp = @fsockopen($host, $port, $errCode, $errStr,$waitTimeoutInSeconds)) { 
     fclose($fp); 
     echo '<img src="online.png"> '; 
    } else { 

     echo '<img src="offline.png"> '; 
    } 
} 

Есть ли порт по умолчанию на окнах (7,8,10), которые могут быть «пингуется» с помощью этого сценария, чтобы проверить, если он доступен без включения или установки каких-либо? - Я хочу проверить статус 500 ПК в моей сети.

+0

почему не "пинг" * хозяин * вместо "пинг" * порт *? ref: http://php.net/manual/en/function.socket-create.php – alexus

ответ

0

исх: PHP: socket_create - Manual

<?PHP 
     function ping($host, $timeout = 1) { 
       /* ICMP ping packet with a pre-calculated checksum */ 
       $package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost"; 
       $socket = socket_create(AF_INET, SOCK_RAW, 1); 
       socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0)); 
       socket_connect($socket, $host, null); 

       $ts = microtime(true); 
       socket_send($socket, $package, strLen($package), 0); 
       if (socket_read($socket, 255)) 
         $result = microtime(true) - $ts; 
       else $result = false; 
       socket_close($socket); 

       return $result; 
     } 
?> 
+0

этот код дает мне ошибки socket_set_option() ожидает, что параметр 1 будет ресурсом и т. Д. Для каждой функции – Houdasek

+0

код 11 лет, он может не работать из-за недавних изменений в php. код в основном для справки (не для того, чтобы вы запускали его в своей среде путем копирования и вставки его) – alexus

+0

ОК спасибо, посмотрим на это :) – Houdasek

0

Вы можете использовать бесплатный IP-сканер, если вы находитесь в среде Windows, или можете использовать nmap в средах Linux для полного сканирования определенного идентификатора сети.

Следующая команда с помощью Nmap:

nmap -sP 192.168.2.1/24 

Покажет все клиенты в сети на 192.168.2.x сети.

Вот ссылка на скрипт IP Scanner: https://gist.github.com/blazeeboy/808796

Nmap обычно поставляется по умолчанию с операционной системой Linux, если это не минимальная установка.

+0

К сожалению, мне нужно сделать это с помощью php – Houdasek

+0

Не можете ли вы использовать системную команду с php? –

+0

Обновлено мой ответ –