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 には空の文字列しか含まれていません。