Foros del Web » Programando para Internet » PHP »

Saber el estado de un servidor de un juego online.

Estas en el tema de Saber el estado de un servidor de un juego online. en el foro de PHP en Foros del Web. Hola, mi problema el siguiente.. Existen juegos online en donde puedes crear tu propio servidor, estoy seguro de que muchos saben de lo que estoy ...
  #1 (permalink)  
Antiguo 17/09/2007, 18:25
 
Fecha de Ingreso: mayo-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Saber el estado de un servidor de un juego online.

Hola, mi problema el siguiente..

Existen juegos online en donde puedes crear tu propio servidor, estoy seguro de que muchos saben de lo que estoy hablando. Un ejemplo de ello son los servidores de Mu, Counter Strike, GTA San andreas online, etc.

Cada servidor se indentifica por una IP y un puerto, Ejemplo:
Cita:
200.36.215.5:7777
Ahora, lo que yo quiero saber, es como, por medio de PHP determinar si dicho servidor está encendido, o apagado. Lo único que logré encontrar fué esto:

Código PHP:
<?
$ip
="200.36.215.5";
$port="7777";

error_reporting(0);
$fp fsockopen($ip$port,$errno,$errstr4);
   if (!
$fp){
    echo 
"OFF";
} else {
    echo 
"ON";
   } 
?>
Al ejecutar este código en mi página, siempre recibo el mensaje "OFF", asi el servidor este prendido..

Lo intenté con otras direcciones de servidores famosos pero igual, sigue saliendo el mensaje "OFF"..

Tengo entendido que esta línea:
Cita:
error_reporting(0);
evita que se muestre un error si no encuentra el servidor, por lo que intente quitandosela y ver que error me aparecia, y me aparecio esto:

Cita:
Warning: fsockopen() [function.fsockopen]: unable to connect to 200.36.215.5 in /home/miuser/public_html/server.php on line 6
OFF
Si alguien puede ayudarme con esto, decirme cual es el error, se lo agradeceria.

Última edición por x0rT-Nuk3; 17/09/2007 a las 18:31
  #2 (permalink)  
Antiguo 17/09/2007, 20:28
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 11 meses
Puntos: 1
Re: Saber el estado de un servidor de un juego online.

lo mas probable es q tu server no tenga activo la funcion fsockopen ya q algunos las desabilitan por seguridad

Última edición por talcual; 17/09/2007 a las 20:29 Razón: se me olvido algo
  #3 (permalink)  
Antiguo 17/09/2007, 21:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Saber el estado de un servidor de un juego online.

Pienso que si fuera eso, no me mostraria el error, ya que por lo que veo el error que me da eliminando la linea que he dicho, es que no puede conectar..
  #4 (permalink)  
Antiguo 17/09/2007, 22:20
 
Fecha de Ingreso: mayo-2006
Ubicación: Viña del Mar , Chile
Mensajes: 103
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Saber el estado de un servidor de un juego online.

los de tu host tienen que aceptar conexion para esa ip y el puerto que vas a ocupar , tienes que darle la ip para que la acepten en las reglas del firewall , si tu ip es dinamica , pues dales el rango de ips que te asigna tu isp , ej : 200.36.*.* , para el puerto 7777 , te comento que me pasó el mismo error en unos de los host que tengo , para comprobar el status de varios servers online que poseo , en mi pc funcionaba localmente , en el host no , tuve que pedir que aceptaran conexiones entrantes para la ip y el puerto que iva a utilizar.

Asegurate de tener bién abierto el puerto 7777 en tu servidor , he probado con mi script y me lanza el error:

Warning: fsockopen() [function.fsockopen]: unable to connect to 200.36.215.5:7777 (Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder. )

10060Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder.

Salu2.
  #5 (permalink)  
Antiguo 18/09/2007, 11:16
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: Saber el estado de un servidor de un juego online.

Hola que tal.

Para saber el estado de los Servidores Online de los juegos, debes conocer almenos un poco de los comandos basicos y como trabajan estos servidores.

Yo tengo una Clase mia, algo simple, pero efectiva, me permite conectar desde PHP un Servidor de Quake 2, de esta manera puedo obtener el Listado de Jugadores, su Puntaje Ping, y si tengo lrcon o rcon, puedo interactuar con el servidor con sus comandos, cambiar el mapa, echar jugadores, obtener la ip de los jugadores, etc... incluso una consola de comandos atravez de la web.

Se llama Clase Conexion Q2 .

Una manera facil de saber los comandos que se mandan a un servidor de juegos, instala un capturador de paquetes TCP/IP (ej SmartSniff) , abre algun programa que muestre informacion sobre servidores de juegos como "The All-Seeing Eye" y captura y analiza los paquetes.

De esta manera, para Quake 2, los servidores operan en el protocolo UDP, generalmente entre los puertos 20000 a 30000 (aunq esos es variable y se puede modificar) y los mensajes al servidor de mandan asi ÿÿÿÿstatus y te entrega el estado del servidor (jugadores,etc...)


Saludos

Última edición por DeeR; 18/09/2007 a las 11:21 Razón: wererere
  #6 (permalink)  
Antiguo 18/09/2007, 14:20
 
Fecha de Ingreso: mayo-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Saber el estado de un servidor de un juego online.

andryus: De verdad muchas gracias, ya le dije al host que haga eso.
Una cosita, me podrias pasar el script que usas para realizar eso, o es el mismo que el mio?
Y no te pudiste conectar porque la IP que puse era un ejemplo, no era la real.

DeeR: Gracias por la información , pero ese script es solo para Quake 2 o también se podria modificar para cualquier juego online?
Por lo que veo es para los que tienen protocolos UDP, en todo caso, como saber que protocolo usa el juego que deseo?

Saludos.

Última edición por x0rT-Nuk3; 18/09/2007 a las 14:36
  #7 (permalink)  
Antiguo 18/09/2007, 14:34
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: Saber el estado de un servidor de un juego online.

Cita:
Iniciado por x0rT-Nuk3 Ver Mensaje
andryus: De verdad muchas gracias, ya le diré al host que haga eso.
Una cosita, me podrias pasar el script que usas para realizar eso, o es el mismo que el mio?

DeeR: Gracias por la información , pero ese script es solo para Quake, o también se podria modificar para cualquier juego online?
El Script te puede servir como base para cualquier otro Servidor, eso si , debes saber ciertos datos como opera el servidor, si sobre TCP o UDP , es obio al ip y el puerto.

Entonces, necesitas saber como se comunica (por debajo) es decir, como es el paquete de informacion que le mandas al servidor de juegos. con el programa q te dije puedes saber ...

ahora recien lo hize para un server de cod2, y la informacion que se manda es asi
....rcon "123456 " status

cualquier comando siempre tiene q tener .... esos puntitos antes para el cod2 ...

ahora, hay un script llamado phgstats que es compatible con una gran cantidad de juegos http://www.woah-projekt.de/

Veelo te puede servir.

saludos
  #8 (permalink)  
Antiguo 18/09/2007, 15:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Saber el estado de un servidor de un juego online.

Gracias..

Disculpa mi ignorancia, ya tengo el programa que me dijiste (SmartSniff), ahora para saber como se envian los paquetes, que debo hacer?.

Y otro puntico, como se determina si es TCP o UDP?..

Saludos
  #9 (permalink)  
Antiguo 18/09/2007, 15:35
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: Saber el estado de un servidor de un juego online.

Yap para una mejor captura de paquetes , instale el WinPcap , se instala solito.

El SmartSniff, tiene un boton Play, con este comienzas a capturar paquetes, es decir, en ese momento hace lo q tienes q hacer, ejemplo visitar una web, abrir el programa que ver los servidores etc ... , luego detienes la captura ...

Abajo sale la lista de paquetes capturado, donde la las ip involucradas (la tuya y la remota), el protocolo (TCP / UDP ) el puerto .. y el paquete enviado ...

y analize el paquete .. eso es lo q se envio ...

----------------------------------------

eso es mas avanzado ... luego ese mismo paquete es el que tienes que enviar usando socket en php (con fopensock) ....

pero lo q tu quieres es tener informacion de un servidor de juegos, ya existe un script para tal caso, es phgstats , tiene soporte para q1,q2,q3,unreal,cod1,cod2,cs y muchos mas

y es de simple instalacion ....


saludos
  #10 (permalink)  
Antiguo 18/09/2007, 15:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 28
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Saber el estado de un servidor de un juego online.

El problema es que en phgstats, en la parte de descargas, sale los juegos que son soportados.. Y no salen los que yo quiero..

Por ejemplo, GTA san andreas Multiplayer, y Counter Strike (no si será algunos de esos halflife)
  #11 (permalink)  
Antiguo 18/09/2007, 16:07
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Re: Saber el estado de un servidor de un juego online.

entonces vas a tener que hacerlo tu ... pero no es complicado ...
captura paquetes con el SmartSniff o wireshark y ve los paquetes.

bueno antes, busque en google, y un comando simple q se le manda al cs, es el siguiente

\xFF\xFF\xFF\xFFTSource Engine Query\x00

entonces para mandarle ese comando a un servidor seria asi

Código PHP:
<?
// Conectando a un Servidor de Counter desde PHP
// by http://deerme.org

$servidor="udp://201.238.231.216";
$puerto "27390";


    
$da fsockopen($servidor$puerto$errno$errstr,10);
    if (!
$da)
    {    
        
$this->error=TRUE;
        
    } else 
    
    {
        
// Info del Server
        
        
        
         
$msg="\xFF\xFF\xFF\xFFTSource Engine Query\x00";
        
fwrite($da$msg);
        
$salida fread($da4096);
        
        
        
        
fclose($da);
                    
              
    }

    echo 
$salida;
    
    

?>
lo cual me imprime

Código:
ÿÿÿÿm201.238.231.216:27390Ciberinc.cL | Publicoo | Team |||Extasi`S|||
este link de puede servir
http://www.hawkee.com/phpBB2/viewtopic.php?t=9273

busca en google la cadena q te dije sale arta info

saludos
  #12 (permalink)  
Antiguo 17/08/2008, 00:16
 
Fecha de Ingreso: agosto-2008
Ubicación: Ushuaia-Argentina
Mensajes: 15
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Saber el estado de un servidor de un juego online.

yo estoy interesado, pero en que la gente pueda agregar los datos de sus servidores en mi web, y crear una gran lista.

quedaron en algo? me gustaria saber :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:06.