[Ayuda] PHP - obtener info de server mediante sockets
#1

Querнa saber si alguno programador PHP tiene idea como sacar informaciуn de un servidor de SAMP mediante el uso de sockets por el puerto UDP. He visto varios scripts sobre esto, pero la idea serнa entender como esta hecha la misma. Desde ya muchas gracias.
Si me pudieran explicar este script, se los agradeceria. En especial la parte que empieza por fwrite y pareciera que concatena una 'i' a la variable 'packet'.

PHP код:
<?php
if (isset($_GET['source'])) {
        
highlight_file(__FILE__);
        exit;
    }
    if (!isset(
$ip))
        
$ip '188.165.206.114';
    if (!isset(
$port))
        
$port 7777;
    
$fp fsockopen('udp://' $ip$port$errno$errstr);
    if (!
$fp)
    {
        echo 
"<tr><td bgcolor=\"#2B5486\">Socket Error: $errno - $errstr</td></tr>\n";
    }
    else
    {
        
$packet 'SAMP';
        
$packet .= chr(strtok($ip'.'));
        
$packet .= chr(strtok('.'));
        
$packet .= chr(strtok('.'));
        
$packet .= chr(strtok('.'));
        
$packet .= chr($port 0xFF);
        
$packet .= chr($port >> 0xFF);
        
        
fwrite($fp$packet.'i');
        
fread($fp11);
        
$is_passworded ord(fread($fp1));
        
$plr_count   ord(fread($fp2));
        
$max_plrs   ord(fread($fp2));
        
$strlen    ord(fread($fp4));
        
$hostname   fread($fp$strlen);
        
$strlen    ord(fread($fp4));
        
$gamemode   fread($fp$strlen);
        
$strlen    ord(fread($fp4));
        
$mapname    fread($fp$strlen);
        echo 
'   <tr><td bgcolor="#2B5486" colspan="2" align="center"><b>' $hostname '</b></td></tr>'."\n";
        echo 
'   <tr><td bgcolor="#2B5486" width="100">Players: </td><td bgcolor="#2B5486" width="250">' $plr_count ' / ' $max_plrs '</td></tr>'."\n";
        echo 
'   <tr><td bgcolor="#2B5486">GameMode: </td><td bgcolor="#2B5486">' $gamemode '</td></tr>'."\n";
        echo 
'   <tr><td bgcolor="#2B5486">MapName: </td><td bgcolor="#2B5486">' $mapname '</td></tr>'."\n";
        if (
$is_passworded)
        {
            echo 
'   <tr><td bgcolor="#2B5486">Contrasenia: </td><td bgcolor="#2B5486">Si</td></tr>'."\n";
        } else {
            echo 
'   <tr><td bgcolor="#2B5486">Contrasenia: </td><td bgcolor="#2B5486">No</td></tr>'."\n";
        }
        
fwrite($fp$packet.'c');
        
fread($fp11);
        
$plr_count ord(fread($fp2));
        if (
$plr_count 0)
        {
            echo 
'  </table><br>'."\n";
            echo 
'  <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center">'."\n";
            echo 
'   <tr><td bgcolor="#2B5486" colspan="2" align="center"><b>Players:</b></td></tr>'."\n";
            echo 
'   <tr><td bgcolor="#2B5486" align="center" width="250"><b>Player</b></td><td bgcolor="#2B5486" align="center" width="100"><b>Score</b></td></tr>'."\n";
            for (
$i=0$i<$plr_count$i++)
            {
                
$strlen ord(fread($fp1));
                
$plrname fread($fp$strlen);
                
$score ord(fread($fp4));
                echo 
'   <tr><td bgcolor="#2B5486">' $plrname '</td><td bgcolor="#2B5486">' $score '</td></tr>'."\n";
            }
        }
        
fclose($fp);
    }
?>
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)