查看服务器是否正在侦听PHP中的端口?

查看服务器是否正在侦听PHP中的端口?,php,apache,port,Php,Apache,Port,在回答之前,请注意我对PHP完全陌生。我听说它很强大 我想做的是在我的(Apache2)web服务器上有一个页面,当用户单击页面上的按钮时,服务器将检查端口是否在其自己的IP上运行,每个按钮都有一个预设端口,我希望对具有相同IP但不同端口的多个按钮进行ping 例如: 单击按钮1(Terraria服务器),服务器ping 127.0.0.1:7777并告知用户是否收到响应 点击按钮2(Minecraft服务器),服务器Ping 127.0.0.1:25565并告知用户等 我已经安装了PHP并

在回答之前,请注意我对PHP完全陌生。我听说它很强大

我想做的是在我的(Apache2)web服务器上有一个页面,当用户单击页面上的按钮时,服务器将检查端口是否在其自己的IP上运行,每个按钮都有一个预设端口,我希望对具有相同IP但不同端口的多个按钮进行ping

例如:

  • 单击按钮1(Terraria服务器),服务器ping 127.0.0.1:7777并告知用户是否收到响应

  • 点击按钮2(Minecraft服务器),服务器Ping 127.0.0.1:25565并告知用户等


我已经安装了PHP并正在运行,我只需要一些代码:)

尝试在端口上建立连接并返回结果:

 <?php
     function Connect($port) {
        $serverConn = @stream_socket_client("tcp://127.0.0.1:{$port}", $errno, $errstr);
        if ($errstr != '') {
            return false;
        }
       fclose($serverConn);
       return true;
      } 


    if(isset($_POST['portTest'])){
       switch ($_POST['portTest']){
           case 'minecraft': $port= '25565';
        break;
           case 'Terraria': $port= '7777';
        break;  
           default: exit;
       }
     if (Connect($port)){
         echo "Server is running!";
       }else{
         echo "Server is down";
       }
    }
    ?> 

    <form method="POST">
    <input type="submit" name="portTest" value="minecraft">
    <input type="submit" name="portTest" value="Terraria">
    </form>


在端口上打开一个套接字(谷歌上有数以十亿计的搜索结果),如果你能打开套接字,你就知道端口正在运行。请注意,如果你做得太多,某些服务(如IMAP IIRC)会禁止你(“为什么这个IP开始与我对话,什么也不说?!”)@H2Ooooooooo我正在我的家庭计算机上运行服务器,我不希望有太多流量,所以这就是为什么。我将使用它在不同的端口上ping自身。不是另一台服务器。它完全是本地的。嗨,谢谢你的回答,它按照我想要的方式工作:D我只是想问,有没有办法缩短超时时间?我找不到一个明显的方法。只是如果服务器关闭,页面将刷新15-20秒,这不是很好。是的,第四个参数是超时,所以
@stream\u socket\u client(“tcp://127.0.0.1:$port“,$errno,$errstr,5)将提供5秒超时