使用PHP查询Shoutcast服务器是脱机还是联机


Query if Shoutcast Server is Offline or Online with PHP

我正在尝试使用脚本来查询Shoutcast服务器是联机还是脱机。下面的代码是我目前正在使用的代码。

$vt_ip = "ip";
$vt_port = "port";
$output = @fsockopen($vt_ip, $vt_port, $errno, $errstr, 2);
if (!$output) {
echo "<FONT CLASS=f1 COLOR=#DD0000><B>OFFLINE</B></FONT>";
} else {
echo "<FONT CLASS=f1 COLOR=#00DD00><B>ONLINE</B></FONT>";
}
@fclose($output);

但它没有更新,它一直处于脱机状态。

如有任何帮助,我们将不胜感激。

$vt_ip = "ip";
$vt_port = "port";
$conn = fsockopen($vt_ip, $vt_port, $errno, $errstr, 2);
if(!$conn){
    echo $errno;
}else{
fwrite($conn, "'n");
$output = fread($conn, 1024);
fclose($conn);
if ($output == "") {
    echo "<FONT CLASS=f1 COLOR=#DD0000><B>OFFLINE</B></FONT>";
} else {
        echo "<FONT CLASS=f1 COLOR=#00DD00><B>ONLINE</B></FONT>";
    }
}

仅仅通过TCP连接到SHOUTcast服务器来确定流是否正常工作是不够的。事实上,即使没有播放流,正在运行的SHOUTcast服务器也会始终接受您的TCP连接。

您必须连接,请求流,然后检查返回状态代码。连接后,发送以下数据:

GET /; HTTP/1.0

然后是'r'n'r'n。现在,从流中读回数据,直到得到'r'n'r'n。然后,您可以断开连接。检查第一条响应行的状态代码,看看它是否为200。如果是,则表示您有一个活动流。