Salve a tutti, scrivo qui per chiedervi una cosa che mi assilla da diversi giorni: per mio sfizio personale stavo provando a fare un piccolo script per vedere se un game server fosse online o meno. Fin qui tutto ok, lo script funzionava perfettamente e tutto andava bene fino a quando non ho deciso di rovinarmi la vita decidendo di fare un' "evoluzione" dello script per vedere un bel po di cose, come i giocatori sul server, il nome del server, la mappa eccetera...
Ho trovato uno script che fa esattamente questo per prendere spunto, e mentre stavo studiando il codice sono incappato nella funzione principale di questo script, cioè la funzione scanserver.
Codice PHP:
function scanserver($serveripaddress,$serverqueryport) {
global $ws_querytimeout;
if($connection = @fsockopen("udp://$serveripaddress",$serverqueryport, $errno, $errstr, 2)) {
$querycommand = pack("CCCV", 0xFE, 0xFD, 0x00, 0x7E) . pack("CCC", 0xff,0xff,0xff);
fwrite($connection,"$querycommand");
$serverdata = fread($connection,2500);
$serverdata = substr($serverdata, 5);
fclose($connection);
return $serverdata;
}
}
Più o meno ho capito come funziona, tuttavia non riesco a capire a cosa serva quel pack(), ho solo notato che togliendolo e sostituendo un'altra stringa lo script non funzionava più (manco ci volesse un genio
)
Insomma dall'alto della mia ignoranza non sono riuscito a capire una mazza, potete spiegarmi per favore come lavora la parte con $querycommand e a cosa serve?? thx
Lorenzo