0

我写了一个脚本来从敌人领土的主服务器中拉出一个服务器列表;然而它默默地失败了;我让它工作了;但由于某种未知的原因,它不再。

我使用此文档与服务器“对话”: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 只包含一个空字符串;

4

1 回答 1

0

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

于 2013-07-07T18:37:08.390 回答