[SOLVED] Problema con sockets
#1
Triste 
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. Are you fucking kidding me?



Código PHP:
QueryServer( const iServer )

{

    static 
hSocket,iPort,sBuffer64 ],iError;

    

    
ArrayGetStringg_aServersSD_Ip ],iServer,sBuffer,63 );

    

    
iPort ArrayGetCellg_aServersSD_Port ],iServer );

    
hSocket socket_opensBuffer,iPort,SOCKET_UDP,iError );

    

    
server_print"Pre-socket: %d",hSocket );

    

    if( 
hSocket <= || iError )

    {

        switch( 
iError )

        {

            case 
0log_amx"[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ Error no disponible ]",iServer );

            case 
1log_amx"[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ No se pudo crear el socket ]",iServer );

            case 
2log_amx"[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ No se pudo resolver el hostname ]",iServer );

            case 
3log_amx"[ Servers ] Hubo un error durante la consulta hacia el servidor %d [ No se pudo conectar al servidor ]",iServer );

        }

        

        
ArraySetCellg_aServersSD_Status ],iServer,SERVER_OFFLINE );

        

        return 
0;

    }

    

    
socket_send2hSocket,QUERY_BODY,QUERY_LEN );

    

    
ArraySetCellg_aQueryQD_hSocket ],iServer,hSocket );

    
ArraySetCellg_aQueryQD_iAttemps ],iServer,10 );

    

    
set_task0.1,"ResponseTask",iServer,_,_,"b" );

    

    return 
1;





Código PHP:
public ResponseTaskiServer )

{

    static 
sResponse1600 ],hSocket,iAttemps;

    

    
hSocket ArrayGetCellg_aQueryQD_hSocket ],iServer );

    

    
server_print"Post-socket: %d",hSocket );

    

    if( 
socket_changehSocket,100 ) )

    {

        
socket_recvhSocket,sResponse,sizeofsResponse ) - );

        

        
server_print"Hey apple!: %s",sResponse );

        

        
socket_closehSocket );

        
remove_taskiServer );

        

        
GetResponseInformationiServer,sResponse );

    }

    else

    {

        if( (
iAttemps ArrayGetCellg_aQueryQD_iAttemps ],iServer )) <= )

        {

            
ArraySetCellg_aServersSD_Status ],iServer,SERVER_OFFLINE );

            

            
socket_closehSocket );

            
remove_taskiServer );

            

            return;

        }

        

        
ArraySetCellg_aQueryQD_iAttemps ],iServer,--iAttemps );

    }





Código:
Pre-socket: 632

Post-socket: 632

Hey apple!: ����m127.0.0.1:27015
Responder
#2
Si supiera sockets te ayudaría puntualmente pero mañana te paso un plugin hecho por xPaw que pones en el chat: /ip <ip:puerto>

Y te da los datos del server de la ip ingresada

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#3
https://forums.alliedmods.net/showthread.php?t=142858
[Imagen: giphy.webp]

Panda Nuestro
Sistema de Cuentas MySQL/SQLite
Discord: FluffyDeveloper#4753

meTaLiCroSS escribió: Pero sin picarse po, todavía te molesta que te haya mandado a la mierda porque querias plugins de mi server? Mírate, seguí programando weas mulas después de años, tení que ser harto penca para esta wea, das pura pena Corazón

(22/01/2021, 02:55 PM)Skylar escribió: dios como me enferma que digas plugins cuando hablas de un solo plugin pendejo re pelotudo
Responder
#4
Gente, yo no pedi un plugin aparte... Es como que asi todo se soluciona :_

Quiero saber porque me aparece ese error raro, capaz alguien sabe la respuesta porque ya le paso Whatever

Andube viendo el server queries de exolent, el de otro pibe, el de otro pibe, en sourcemod, las distintas extensiones de sockets, server communication de exolent, TODO para ver como hacer las cosas mas simples.

Y sobre todo me aparece este error rarito Fuuuuuu

EDIT: Todos los datos obtenidos por arrays estan bien puestos, la ip el puerto todo... Ya los verifique.
Responder
#5
pasa QUERY_BODY
Responder
#6
Código:
#define QUERY_BODY "^xFF^xFF^xFF^xFF^x54Source Engine Query^x00"

#define QUERY_LEN 25



:3
Responder
#7
esta bien lo que te responde...los primeros caracteres es el Header,después la ip y se corta por los caracteres nulos que siguen a la ip



Código:
Header     byte

Address     string

Name     string

Map     string

Folder     string

Game     string

Players     byte

Max. Players     byte

Protocol     byte

Server type     byte

Environment     byte

Visibility     byte     

Mod     byte
Responder
#8
(23/10/2013, 10:29 PM)Destro escribió: esta bien lo que te responde...los primeros caracteres es el Header,después la ip y se corta por los caracteres nulos que siguen a la ip



Código:
Header     byte

Address     string

Name     string

Map     string

Folder     string

Game     string

Players     byte

Max. Players     byte

Protocol     byte

Server type     byte

Environment     byte

Visibility     byte     

Mod     byte



Gracias por hacerme acordar de lo estupido que soy al olvidarme que hay caracteres nulos e_e
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)