Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Xephiro en 12 Agosto 2009, 16:37 pm



Título: 2 Preguntas :S
Publicado por: Xephiro en 12 Agosto 2009, 16:37 pm
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

Código:
	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

Código:
����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

Código:
\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? ..


Título: Re: 2 Preguntas :S
Publicado por: Erik# en 13 Agosto 2009, 16:33 pm
es hexadecimal o ascii:
\xFF\xFF\xFF\xFFinfo\x00


Título: Re: 2 Preguntas :S
Publicado por: SnakeDrak en 13 Agosto 2009, 17:57 pm
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!