0
我寫了一個腳本來從Enemy Territory的主服務器上獲取服務器列表;然而它默默地失敗了;我有它的工作;但由於一些未知的原因,它現在不再有了。連接主服務器stream_socket_client
我用這個文檔與服務器「交談」: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只包含一個空字符串;
print_r($ data);應該返回僞造文本,因爲這是6字節編碼,由'/'分隔(ip:4字節,端口:2字節) – user215867 2013-05-09 08:42:19