PHP пинг, чтобы получить ответ с IP-адресом

Я пытаюсь пропинговать IP-адрес, чтобы проверить IP-адрес, доступен ли он или нет. Но у меня возникли проблемы при использовании функции fsockopen. Я провел некоторые исследования по использованию функций «ping», «exec», но ни один из них не казался реально работоспособным.

Вот мой код для проверки IP-адреса:

<?php
$ipAddress = array("192.168.1.1","192.168.1.67");
$kiosk = array("Kuantan (35)","UTC Kuantan (36)");

$checkCount = 0;
foreach(array_combine($ipAddress,$kiosk) as $items => $kiosk){
$fp = @fSockOpen($items,80,$errno,$errstr,1);

if(is_resource($fp)){
if($fp) {
$status=0;
fclose($fp);
echo 'Success<br/>';
}
}
else{
echo 'Failed<br/>';

}

}
?>

Оба IP-адреса я могу пинговать из командной строки. Но для 192.168.1.67 это привело меня к «Сбой», только к 192.168.1.1. или 127.0.0.1, показывающий мне «Успех». Что-то я делаю не так?

0

Решение

Ваш код на самом деле не проверяет связь, а просто пытается открыть TCP-соединение через порт 80. Команда ping использует ICMP-пакеты, поэтому, вероятно, 192.168.1.67 не принимает подключения через порт 80.

После вашего чата с Catalyst приведен пример кода, который будет отправлять только два пакета и ждать ответа до 2 секунд. $ retval будет равен 0 при успехе, 1 при потере пакета, 2 при любой другой ошибке. Это в Linux, параметры команды Windows немного отличаются, но вы должны иметь возможность изменить это.

<?
// unset variables first to avoid mixing the results from previous calls
$retval=-1;
$output=array();
exec("ping 127.0.0.1 -c2 -w2 2>&1",$output,$retval);
echo "Return code: ".$retval."<br>\n";
echo implode("<br>\n",$output);
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]