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

时间:2013-08-02 12:59:59

标签: php offline shoutcast

我正在尝试使用脚本来查询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);

但它没有更新,它停留在离线状态。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

$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>";
    }
}

答案 1 :(得分:0)

仅仅与SHOUTcast服务器建立TCP连接以确定流是否正常工作是不够的。事实上,正在运行的SHOUTcast服务器将始终接受您的TCP连接,即使没有可供播放的流。

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

GET /; HTTP/1.0

按照\r\n\r\n进行操作。现在,从流中读取数据,直到获得\r\n\r\n。然后,你可以断开连接。检查第一个响应行的状态代码,看它是否为200。如果是,你就有了一个活跃的流。