2 Preguntas :S

Iniciado por Xephiro, 12 Agosto 2009, 16:37 PM

0 Miembros y 1 Visitante están viendo este tema.

Xephiro

Hola, bueno tengo las siguientes preguntas, la primera es:

Estoy buscando la forma para poder captar los datos de un servidor counter strike y poder ponerlos en mi web (Usuarios online, mapa actual, tiempo online cosas asi)

tengo una parte de un codigo

function getServerData($command) {
$serverdata ="";
$serverdatalen=0;

$waittime = 3000;
if ($waittime< 500) $waittime= 500;
if ($waittime>2000) $waittime=2000;
$waittime=doubleval($waittime/1000.0);


if (!$cssocket=fsockopen("udp://200.63.96.233","25008",$errnr)) {
$errmsg="No connection";
return "";
}

socket_set_blocking($cssocket,true);
socket_set_timeout($cssocket,0,500000);
fwrite($cssocket,$command,strlen($command));
// Mark
$starttime=timenow();
do {
$serverdata.=fgetc($cssocket);
$serverdatalen++;
$socketstatus=socket_get_status($cssocket);
if (timenow()>($starttime+$waittime)) {
$errmsg="Connection timed out";
fclose($cssocket);
return "";
}
} while ($socketstatus["unread_bytes"] );
fclose($cssocket);
return $serverdata;
}

function timenow() {
return doubleval(ereg_replace('^0\.([0-9]*) ([0-9]*)$','\\2.\\1',microtime()));
}


echo getServerData("\xFF\xFF\xFF\xFFinfo\x00");


eso mas o menos me retorna lo siguiente


����C200.63.96.233:25008�[Wconnectionserver.com] | dnb de_dust2�cstrike�Counter-Strike��/



Pero al subir el archivo php a mi web, este no funciona. :S mi hosting tiene PHP 5.2 y aparentemente no tiene restricciones a socket


Bueno y la segunda pregunta es sobre lo anterior tambien,

Que significa

\xFF\xFF\xFF\xFFinfo\x00

Lo e buscado en todos lados, pero no logro conseguir algun informacion..

aparentemente segun como son los comandos de la consola de Counter, puede ser el envio del comanco info, si es asi, existe algun otro metodo para hacer lo que busco? ..

Erik#

es hexadecimal o ascii:
\xFF\xFF\xFF\xFFinfo\x00

SnakeDrak

#2
Hola,

\xFF\xFF\xFF\xFFinfo\x00

Son los paquetes (no los cambies si no conoces como funciona el protocolo) e info es la cadena ASCII que se manda en los paquetes para identificarlo en el servidor y devolver los datos (IP etc..)

Yo estoy haciendo algo así para otro juego, ¿te marca algún error el archivo? (activa display_errors) si no te marca error pero te funciona en tu PC.. posiblemente no tiene permiso para usar sockets, porque viendo el changelog de fsockopen no veo ningún cambio en la 5.0 o 5.2, el último fue en la 4.3.

El único cambio que hay es en la función: socket_get_status

Citar
Version     Description
5.0.0    The following entries were added in the returned array: mode, seekable, and uri.
4.3.0    The following entries were added in the returned array: stream_type, wrapper_type, wrapper_data, and filters.
4.3.0    socket_get_status() is an alias for this function. Prior to PHP 4.3.0, it was used to retrieve the first four items, for socket based streams only.

Mírate a ver si tienes que cambiar algo.

A y por cierto, no es lo mismo las funciones de socket: http://es.php.net/manual/en/ref.sockets.php

Que las de http://es.php.net/manual/en/ref.network.php

Lo digo por si prefieres probar las de sockets.
Ojalá te sea de ayuda.

Saludos!