Bueno, realmente me sacaron la cabeza :C
Intente obtener los datos actuales de un servidor (map, players) por medio de sockets pero cuando creo el socket y lo envio... me da una respuesta! Y esa respuesta es mi ip local, wtf.
Intente obtener los datos actuales de un servidor (map, players) por medio de sockets pero cuando creo el socket y lo envio... me da una respuesta! Y esa respuesta es mi ip local, wtf.
Código PHP:
QueryServer( const iServer )
{
static hSocket,iPort,sBuffer[ 64 ],iError;
ArrayGetString( g_aServers[ SD_Ip ],iServer,sBuffer,63 );
iPort = ArrayGetCell( g_aServers[ SD_Port ],iServer );
hSocket = socket_open( sBuffer,iPort,SOCKET_UDP,iError );
server_print( "Pre-socket: %d",hSocket );
if( hSocket <= 0 || iError )
{
switch( iError )
{
case 0: log_amx( "[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ Error no disponible ]",iServer );
case 1: log_amx( "[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ No se pudo crear el socket ]",iServer );
case 2: log_amx( "[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ No se pudo resolver el hostname ]",iServer );
case 3: log_amx( "[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ No se pudo conectar al servidor ]",iServer );
}
ArraySetCell( g_aServers[ SD_Status ],iServer,SERVER_OFFLINE );
return 0;
}
socket_send2( hSocket,QUERY_BODY,QUERY_LEN );
ArraySetCell( g_aQuery[ QD_hSocket ],iServer,hSocket );
ArraySetCell( g_aQuery[ QD_iAttemps ],iServer,10 );
set_task( 0.1,"ResponseTask",iServer,_,_,"b" );
return 1;
}
Código PHP:
public ResponseTask( iServer )
{
static sResponse[ 1600 ],hSocket,iAttemps;
hSocket = ArrayGetCell( g_aQuery[ QD_hSocket ],iServer );
server_print( "Post-socket: %d",hSocket );
if( socket_change( hSocket,100 ) )
{
socket_recv( hSocket,sResponse,sizeof( sResponse ) - 1 );
server_print( "Hey apple!: %s",sResponse );
socket_close( hSocket );
remove_task( iServer );
GetResponseInformation( iServer,sResponse );
}
else
{
if( (iAttemps = ArrayGetCell( g_aQuery[ QD_iAttemps ],iServer )) <= 0 )
{
ArraySetCell( g_aServers[ SD_Status ],iServer,SERVER_OFFLINE );
socket_close( hSocket );
remove_task( iServer );
return;
}
ArraySetCell( g_aQuery[ QD_iAttemps ],iServer,--iAttemps );
}
}
Código:
Pre-socket: 632
Post-socket: 632
Hey apple!: ����m127.0.0.1:27015