我正在尝试使用脚本来查询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);
但它没有更新,它停留在离线状态。
非常感谢任何帮助。
答案 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
。如果是,你就有了一个活跃的流。