我有一个关于ping某些游戏服务器以查看它们是否存活的问题,大多数只使用标准的PHP ping工作正常但其他人来自蒸汽...而且蒸汽使我更难发送ping一下看它是否还活着,我试过Steam Condenser但是......不知道如何使用它,因为没有文档。
我的问题
我如何ping 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,这似乎是初始化套接字的问题?
答案 0 :(得分:0)
如何使用操作系统的ping实用程序,使用PHP执行终端ping命令。您可以在此处阅读:http://php.net/manual/en/function.shell-exec.php
答案 1 :(得分: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(连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。)在第6行的C:\ xampp \ htdocs \ test.php中 离线
它不认为你应该把“udp://”,因为只使用端口号就足够了。