Image

Imagemarkarita wrote in Imagephp

game server status

Hello, I'm making a game server status script for fun and for socket practice, what it is supposed to do is get information from the gameserver such as amount of players on it, current map, etcetera. Then I have to organize the info I get back into individual stats, like # of players = 20.

Here's what I have, I think it should work, but it doesn't.




$host = 'xxx.xxx.xxx.xx'; // of course these would be real values
$port = 'xxxxx';



$fp = fsockopen("udp://$host", $port, $errno, $errstr, 5);

socket_set_timeout($fp,2);

if(!$fp) {

echo $errstr .' -- '. $errno;

} else {


$status.=fread($fp,1);
$bytes_left = socket_get_status($fp);

if ($bytes_left > 0) {

$status.=fread($fp, $bytes_left[unread_bytes]);

}



}

echo $status;
$arr = explode(Chr(92), $status); // explode $status by '/'

echo '<pre>';
print_r($arr);
echo '</pre>';



fclose($fp);



I just get an empty array. Sockets are confusing, anyone have any good ideas?



[..t.`T..n.#Q..E.]
* 04 04 41 1C | 00 00 80 11 | F9 AC 41 1D | 7B 75 52 52 [..A.......A.{uRR]
* ED 3B 59 D8 | 07 46 03 F0 | 37 56 5C 67 | 61 6D 65 6E [.;Y..F..7V\gamen]
* 61 6D 65 5C | 62 66 69 65 | 6C 64 31 39 | 34 32 5C 67 [ame\bfield1942\g]
* 61 6D 65 76 | 65 72 5C 76 | 31 2E 36 5C | 6C 61 6E 67 [amever\v1.6\lang]
* 75 61 67 65 | 5C 45 6E 67 | 6C 69 73 68 | 5C 6C 6F 63 [uage\English\loc]
* 61 74 69 6F | 6E 5C 31 30 | 33 33 5C 61 | 76 65 72 61 [ation\1033\avera]
* 67 65 46 50 | 53 5C 30 5C | 63 6F 6E 74 | 65 6E 74 5F [geFPS\0\content_]
* 63 68 65 63 | 6B 5C 30 5C | 64 65 64 69 | 63 61 74 65 [check\0\dedicate]
* 64 5C 31 5C | 67 61 6D 65 | 49 64 5C 62 | 66 31 39 34 [d\1\gameId\bf194]
* 32 5C 67 61 | 6D 65 6D 6F | 64 65 5C 6F | 70 65 6E 70 [2\gamemode\openp]
* 6C 61 79 69 | 6E 67 5C 67 | 61 6D 65 74 | 79 70 65 5C [laying\gametype\]
* 63 6F 6F 70 | 5C 68 6F 73 | 74 6E 61 6D | 65 5C 32 32 [coop\hostname\22]
* 5C 68 6F 73 | 74 70 6F 72 | 74 5C 31 34 | 35 36 37 5C [\hostport\14567\]
* 6D 61 70 49 | 64 5C 42 46 | 31 39 34 32 | 5C 6D 61 70 [mapId\BF1942\map]
* 6E 61 6D 65 | 5C 45 6C 20 | 41 6C 61 6D | 65 69 6E 5C [name\El Alamein\]
* 6D 61 78 70 | 6C 61 79 65 | 72 73 5C 33 | 32 5C 6E 75 [maxplayers\32\nu]
* 6D 70 6C 61 | 79 65 72 73 | 5C 30 5C 70 | 61 73 73 77 [mplayers\0\passw]
* 6F 72 64 5C | 31 5C 72 65 | 73 65 72 76 | 65 64 73 6C [ord\1\reservedsl]
* 6F 74 73 5C | 30 5C 72 6F | 75 6E 64 54 | 69 6D 65 5C [ots\0\roundTime\]
* 2D 31 5C 72 | 6F 75 6E 64 | 54 69 6D 65 | 52 65 6D 61 [-1\roundTimeRema]
* 69 6E 5C 2D | 31 5C 73 74 | 61 74 75 73 | 5C 34 5C 73 [in\-1\status\4\s]
* 76 5F 70 75 | 6E 6B 62 75 | 73 74 65 72 | 5C 31 5C 74 [v_punkbuster\1\t]
* 69 63 6B 65 | 74 73 31 5C | 31 39 37 5C | 74 69 63 6B [ickets1\197\tick]
* 65 74 73 32 | 5C 31 39 38 | 5C 75 6E 70 | 75 72 65 5F [ets2\198\unpure_]
* 6D 6F 64 73 | 5C 5C 76 65 | 72 73 69 6F | 6E 5C 76 31 [mods\\version\v1]
* 2E 36 5C 61 | 63 74 69 76 | 65 5F 6D 6F | 64 73 5C 62 [.6\active_mods\b]
...continues