0

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

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

任何帮助将不胜感激。

4

2 回答 2

0

仅仅与 SHOUTcast 服务器建立 TCP 连接以确定流是否正常工作是不够的。事实上,一个正在运行的 SHOUTcast 服务器总是会接受你的 TCP 连接,即使没有流播放。

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

GET /; HTTP/1.0

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

于 2013-08-03T15:36:48.420 回答
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>";
    }
}
于 2013-08-02T13:05:48.277 回答