如何在php中ping UDP

时间:2015-02-22 20:22:12

标签: php networking tcp udp ping

我有一个关于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,这似乎是初始化套接字的问题?

2 个答案:

答案 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://”,因为只使用端口号就足够了。