连接主服务器stream_socket_client

时间:2013-05-09 08:40:34

标签: php sockets

我编写了一个脚本,用于从Enemy Territory的主服务器中提取服务器列表;然而,它默默地失败了;我有它的工作;但由于某种未知的原因,它不再存在。

我使用此文档与服务器“对话”:http://src.gnu-darwin.org/ports/games/masterserver/work/masterserver-0.4.1/docs/PROTOCOLS 这似乎是有效的,因为它以前工作,它仍然适用于游戏服务器;这是我的代码:

<?php
// set sv_master1 "etmaster.idsoftware.com"
// set sv_master2 "master0.gamespy.com"
// set sv_master3 "wolfmaster.idsoftware.com"
// set sv_master4 "clanservers.net"
// set sv_master5 "master0.etmaster.net" 213.108.29.23

$host = 'etmaster.idsoftware.com';
$port = '27950';
// $status = chr(255) . chr(255) . chr(255) . chr(255) . chr(0x02) .  'getservers' . chr(0x00);
$status = "\xFF\xFF\xFF\xFFgetservers\x00";

$fp = stream_socket_client("udp://" . $host . ":" . $port, $errno, $errstr, 10);
if (!$fp) {
    echo "ERROR: " . $errno . $errstr . "<br>\n";
} else {

    fwrite($fp, $status);
    //stream_set_timeout($fp, 10); // this is for debugging;
    $data = fread($fp, 1024);
    fclose($fp);

    print_r($data);     
}

我尝试了60秒的执行时间(它的本地主机),但它仍然无效......任何帮助都表示赞赏!

当我检查步骤(在cli中)时,花费在fread上的时间最长();但是$ data只包含一个空字符串;

1 个答案:

答案 0 :(得分:0)

错误很小;必须有5 * \ xFF标签;我只用了4。