У меня есть вопрос о проверке связи с некоторыми игровыми серверами, чтобы увидеть, живы они или нет, большинство работает нормально только с вашим стандартным PHP-пингом, но другие работают с steam … и steam затрудняет мне просто отправку ping на Посмотрим, жив он или нет, я попробовал Steam Condenser, но … понятия не имею, как его использовать, так как нет документации.
мой вопрос
Как я могу пинговать игровые серверы UDP, такие как Arma 2, Arma 3 и т. д. Вот что я попробовал:
$host = '128.0.0.1';
$port = 1234;
$waitTimeoutInSeconds = 7;
if($fp = fsockopen("udp://".$host,$port,$errCode,$errStr))
{
echo 'Online';
}
else
{
echo 'Offline';
}
проблема в том, что я всегда получаю «true», независимо от того, какой IP или порт я использую, как я могу заставить это работать?
РЕДАКТИРОВАТЬ
Я тоже пробовал
$host = '128.0.0.1';
$port = 1234;
$waitTimeoutInSeconds = 7;
if($fp = fsockopen("udp://".$host,$port,$errCode,$errStr))
{
$write = fwrite($fp,"x00");
if (!$write)
{
echo 'offline';
}
else
{
echo 'online';
}
}
else
{
echo 'offline';
}
fclose($fp);
Однако с этим я получаю код ошибки 0, который, кажется, проблема с инициализацией сокета?
Я попробовал это, удалив «udp: //»:
$host = '128.0.0.1';
$port = 1234;
$waitTimeoutInSeconds = 7;
if($fp = fsockopen($host,$port,$errCode,$errStr))
{
echo 'Online';
}
else
{
echo 'Offline';
}
И это работает. Вот текст возврата:
Предупреждение: fsockopen (): невозможно подключиться к 128.0.0.1:1234 (попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, потому что подключенный хост не смог ответить.) В C: \ xampp \ htdocs \ test.php в строке 6
Не в сети
Не думаю, что вы должны ставить «udp: //», потому что достаточно просто использовать номер порта.
Что касается использования утилиты ping ОС, выполните команду терминала ping с помощью PHP. Вы можете прочитать это здесь : http://php.net/manual/en/function.shell-exec.php