AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [HELP] Sockets problem ( recieve ) (https://forums.alliedmods.net/showthread.php?t=222399)

red_bull2oo6 08-02-2013 07:34

[HELP] Sockets problem ( recieve )
 
hi again, i tried to get the page info from This link but it's not working..

i have this code, connection is done but i receive empty info.



PHP Code:

/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < sockets >

#define PLUGIN "Socket Test#2"
#define VERSION "1.0"

enum _:iServerData
{
    
DATA256 ],
    
HOST20 ],
    
REQUEST128 ],
    
SOCKET,
    
ERROR
}

new 
g_ServerDataiServerData ];

public 
plugin_init( )
{
    
register_pluginPLUGINVERSION"Askhanar" );
    
    
FormatHostAndRequest( );
    
set_task5.0"GetPlayerInfo"112233 );
    
    
// Add your code here...
}

FormatHostAndRequest( )
{    
    
g_ServerDataHOST ] = "gametracker.com";
    
formatexg_ServerDataREQUEST ], sizeof g_ServerDataREQUEST ] ) -1,"GET /player/Askhanar/188.212.106.110:27015/ HTTP/1.1^nHost:%s^r^n^r^n"g_ServerDataHOST ] );
}


public 
GetPlayerInfo( )
{
    
    if( 
g_ServerDataSOCKET ] > )
        
socket_closeg_ServerDataSOCKET ] );
    

    
g_ServerDataSOCKET ] = socket_openg_ServerDataHOST ], 80SOCKET_TCPg_ServerDataERROR ] );
    
    if( 
g_ServerDataERROR ] == && g_ServerDataSOCKET ] > )
    {
        
socket_sendg_ServerDataSOCKET ], g_ServerDataREQUEST ], strleng_ServerDataREQUEST ] ) );
        
set_task0.1"task_ReciveData"g_ServerDataSOCKET ] );
    }
    else
    {
        switch( 
g_ServerDataERROR ] )
        {
            case 
1:    log_amx("[ERROR] Unable to create socket." );
            case 
2:    log_amx("[ERROR] Unable to connect to hostname." );
            case 
3:    log_amx("[ERROR] Unable to connect to the HTTP port." );
            
        } 
        
        
set_fail_state"An error occured, read logs." );
    }
    
}

public 
task_ReciveData( )
{
    if( !
socket_changeg_ServerDataSOCKET ], ) )
    {
        
set_task0.1"task_ReciveData"g_ServerDataSOCKET ] );
        return;
    }
    
    
socket_recvg_ServerDataSOCKET ], g_ServerDataDATA ], sizeof g_ServerDataDATA ] ) -);
    
    
log_amx"Recieved: %s"g_ServerDataDATA ] );
    
    
socket_closeg_ServerDataSOCKET ] );
    
g_ServerDataSOCKET ] = 0;


and in logs i have this:

Code:

L 08/02/2013 - 14:27:37: -------- Mapchange to awp_india --------
L 08/02/2013 - 14:27:43: [2.amxx] Recieved:

what's going wrong ? is the host sending me blank info?

Black Rose 08-02-2013 11:38

Re: [HELP] Sockets problem ( recieve )
 
"GET /player/Askhanar/188.212.106.110:27015/ HTTP/1.1^r^nHost:%s^r^n^r^n"

Code:

Recieved: HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 02 Aug 2013 15:37:17 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.gametracker.com//player/Askhanar/188.212.106.110:27015/
Expires: Sat, 03 Aug 2

I don't know the reason for 301 though.

red_bull2oo6 08-02-2013 12:05

Re: [HELP] Sockets problem ( recieve )
 
thank you verry much.. i thought i can get all the page.. and search for
'Minutes Played' to retrieve them.. but i see it's not possible :D

anyone knows why its 301 insteam 200 ? :-s

Black Rose 08-02-2013 12:57

Re: [HELP] Sockets problem ( recieve )
 
It can be done. I successfully downloaded the page you sent using HTTP.inc. With some small modification you can output the information to a string isntead of writing it to a file. Search for it.

red_bull2oo6 08-02-2013 14:10

Re: [HELP] Sockets problem ( recieve )
 
i will try and edit with the result..
i think i`ll extract the code directly from .inc for only reason that i need it to be fast.

EDIT:

i tried something.. but its working in the same way..

PHP Code:

/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < sockets >

#define PLUGIN "Socket Test#2"
#define VERSION "1.0"

enum _:iServerData
{
    
DATA256 ],
    
HOST64 ],
    
REQUEST128 ],
    
SOCKET,
    
ERROR,
    
DATABLOCKS,
    
DATASTART,
    
PACKETNUM
}

new 
g_ServerDataiServerData ];

public 
plugin_init( )
{
    
register_pluginPLUGINVERSION"Askhanar" );
    
    
FormatHostAndRequest( );
    
set_task5.0"GetPlayerInfo"112233 );
    
    
// Add your code here...
}

FormatHostAndRequest( )
{    
    
g_ServerDataHOST ] = "gametracker.com";
    
formatexg_ServerDataREQUEST ], sizeof g_ServerDataREQUEST ] ) -1,"GET /player/Askhanar/188.212.106.110:27015/ HTTP/1.1^r^nHost:%s^r^n^r^n"g_ServerDataHOST ] );
}


public 
GetPlayerInfo( )
{
    
    if( 
g_ServerDataSOCKET ] > )
        
socket_closeg_ServerDataSOCKET ] );
    

    
g_ServerDataSOCKET ] = socket_openg_ServerDataHOST ], 80SOCKET_TCPg_ServerDataERROR ] );
    
    if( 
g_ServerDataERROR ] == && g_ServerDataSOCKET ] > )
    {
        
socket_sendg_ServerDataSOCKET ], g_ServerDataREQUEST ], strleng_ServerDataREQUEST ] ) );
        
set_task0.1"task_ReciveData"g_ServerDataSOCKET ] );
    }
    else
    {
        switch( 
g_ServerDataERROR ] )
        {
            case 
1:    log_amx("[ERROR] Unable to create socket." );
            case 
2:    log_amx("[ERROR] Unable to connect to hostname." );
            case 
3:    log_amx("[ERROR] Unable to connect to the HTTP port." );
            
        } 
        
        
set_fail_state"An error occured, read logs." );
    }
    
}

public 
task_ReciveData( )
{
    if( !
socket_changeg_ServerDataSOCKET ], ) )
    {
        
set_task0.1"task_ReciveData"g_ServerDataSOCKET ] );
        return;
    }
    
    if ( ( 
g_ServerDataDATABLOCKS ] = socket_recvg_ServerDataSOCKET ], g_ServerDataDATA ], sizeof g_ServerDataDATA ] ) ) ) )
    {
        if ( ( ++
g_ServerDataPACKETNUM ] == ) && ( ( g_ServerDataDATASTART ] = strfindg_ServerDataDATA ] , "^r^n^r^n" ) ) > -) )
        {
            
            
g_ServerDataDATASTART ] += 4;
        }
        else
        {
            
g_ServerDataDATASTART ] = 0;
        }
        
        
log_amx"[%i] RECEIVED: %s"g_ServerDataPACKETNUM ], g_ServerDataDATA ][ g_ServerDataDATASTART ] ] );
    }
    else
    {

    
        
socket_closeg_ServerDataSOCKET ] );
        
g_ServerDataSOCKET ] = 0;
        
g_ServerDataPACKETNUM ] = 0;
        
g_ServerDataDATASTART ] = 0;
        
g_ServerDataDATABLOCKS ] = 0;
    }


i tried with http.inc by myself and it successfully donwloaded the page content in a .txt file..
idk how to make it store in a string cause http.inc its using fwrite_blocks..


LE2: i tested for more than 1 hour and here it is.
excuse my ugly coded.. its for testing.
PHP Code:

/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < sockets >

#define PLUGIN "Socket Test#2"
#define VERSION "1.0"

enum _:iServerInfos
{
    
Server64 ],
    
RemoteFile64 ],
    
Socket,
    
Error,
    
PacketNum
    
}

new 
g_ServerDataiServerInfos ];

new 
szRequest128 ];
new 
g_DataBuffer4096 ];

public 
plugin_init( )
{
    
register_pluginPLUGINVERSION"Askhanar" );
    
    
FormatHostAndRequest( );
    
register_concmd"test""GetPlayerInfo" );
    
    
set_task5.0"GetPlayerInfo"112233 );
    
    
// Add your code here...
}

FormatHostAndRequest( )
{
    
g_ServerDataServer ] = "www.gametracker.com";
    
g_ServerDataRemoteFile ] = "player/askhanar/188.212.106.110:27015";
    
    
formatexszRequestsizeof szRequest ) -1,"GET /%s/ HTTP/1.1^r^nHost: %s^r^n^r^n"g_ServerDataRemoteFile ], g_ServerDataServer ] );
}


public 
GetPlayerInfo( )
{
    
    if( 
g_ServerDataSocket ] > )
        
socket_closeg_ServerDataSocket ] );
    

    
g_ServerDataSocket ] = socket_openg_ServerDataServer ], 80SOCKET_TCPg_ServerDataError ] );
    
    if( 
g_ServerDataError ] == && g_ServerDataSocket ] > )
    {
        
log_amx"connected, sending: %s"szRequest );
        
socket_sendg_ServerDataSocket ], szRequestsizeofszRequest ) );
        
g_ServerDataPacketNum ] = 0;
        
        
set_task0.1"task_ReciveData"112233__"b");
        
set_task5.0"task_close" );
    }
    else
    {
        switch( 
g_ServerDataError ] )
        {
            case 
1:    log_amx("[ERROR] Unable to create socket." );
            case 
2:    log_amx("[ERROR] Unable to connect to hostname." );
            case 
3:    log_amx("[ERROR] Unable to connect to the HTTP port." );
            
        } 
        
        
set_fail_state"An error occured, read logs." );
    }
    
}

public 
task_close( )
{
    
log_amx"removed_task" );
    
socket_closeg_ServerDataSocket ] );
    
g_ServerDataSocket ] = 0;
    
g_ServerDataPacketNum ] = 0;
    
remove_task112233 );
}

public 
task_ReciveData( )
{
    
log_amx"task_rec" );
    static 
iDataStart
    
new iLen;
    
    if( 
socket_changeg_ServerDataSocket ], ) )
    {
        
        if( ( 
iLen socket_recvg_ServerDataSocket ], g_DataBuffersizeofg_DataBuffer ) ) ) )
        {
            
            if ( ( ++
g_ServerDataPacketNum ] == ) && ( ( iDataStart strfindg_DataBuffer "^r^n^r^n" ) ) > -) )
            {
                
iDataStart += 4;
            }
            else
            {
                
iDataStart 0;
            }
            
            
log_amx"[%i] [ %i ] RECEIVED: %s"g_ServerDataPacketNum ], iLeng_DataBufferiDataStart ] );
            
        }
        
/*else
        {
    
            log_amx( "removed_task" );
            socket_close( g_ServerData[ Socket ] );
            g_ServerData[ Socket ] = 0;
            g_ServerData[ PacketNum ] = 0;
            remove_task( 112233 );
        }*/
    
}
        



Black Rose 08-02-2013 18:10

Re: [HELP] Sockets problem ( recieve )
 
Quote:

Originally Posted by red_bull2oo6 (Post 2004301)
LE2: i tested for more than 1 hour and here it is.
excuse my ugly coded.. its for testing.
PHP Code:

/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < sockets >

#define PLUGIN "Socket Test#2"
#define VERSION "1.0"

enum _:iServerInfos
{
    
Server64 ],
    
RemoteFile64 ],
    
Socket,
    
Error,
    
PacketNum
    
}

new 
g_ServerDataiServerInfos ];

new 
szRequest128 ];
new 
g_DataBuffer4096 ];

public 
plugin_init( )
{
    
register_pluginPLUGINVERSION"Askhanar" );
    
    
FormatHostAndRequest( );
    
register_concmd"test""GetPlayerInfo" );
    
    
set_task5.0"GetPlayerInfo"112233 );
    
    
// Add your code here...
}

FormatHostAndRequest( )
{
    
g_ServerDataServer ] = "www.gametracker.com";
    
g_ServerDataRemoteFile ] = "player/askhanar/188.212.106.110:27015";
    
    
formatexszRequestsizeof szRequest ) -1,"GET /As HTTP/1.1^r^nHost: %s^r^n^r^n"g_ServerDataRemoteFile ], g_ServerDataServer ] );
}


public 
GetPlayerInfo( )
{
    
    if( 
g_ServerDataSocket ] > )
        
socket_closeg_ServerDataSocket ] );
    

    
g_ServerDataSocket ] = socket_openg_ServerDataServer ], 80SOCKET_TCPg_ServerDataError ] );
    
    if( 
g_ServerDataError ] == && g_ServerDataSocket ] > )
    {
        
log_amx"connected, sending: %s"szRequest );
        
socket_sendg_ServerDataSocket ], szRequestsizeofszRequest ) );
        
g_ServerDataPacketNum ] = 0;
        
        
set_task0.1"task_ReciveData"112233__"b");
        
set_task5.0"task_close" );
    }
    else
    {
        switch( 
g_ServerDataError ] )
        {
            case 
1:    log_amx("[ERROR] Unable to create socket." );
            case 
2:    log_amx("[ERROR] Unable to connect to hostname." );
            case 
3:    log_amx("[ERROR] Unable to connect to the HTTP port." );
            
        } 
        
        
set_fail_state"An error occured, read logs." );
    }
    
}

public 
task_close( )
{
    
log_amx"removed_task" );
    
socket_closeg_ServerDataSocket ] );
    
g_ServerDataSocket ] = 0;
    
g_ServerDataPacketNum ] = 0;
    
remove_task112233 );
}

public 
task_ReciveData( )
{
    
log_amx"task_rec" );
    static 
iDataStart
    
new iLen;
    
    if( 
socket_changeg_ServerDataSocket ], ) )
    {
        
        if( ( 
iLen socket_recvg_ServerDataSocket ], g_DataBuffersizeofg_DataBuffer ) ) ) )
        {
            
            if ( ( ++
g_ServerDataPacketNum ] == ) && ( ( iDataStart strfindg_DataBuffer "^r^n^r^n" ) ) > -) )
            {
                
iDataStart += 4;
            }
            else
            {
                
iDataStart 0;
            }
            
            
log_amx"[%i] [ %i ] RECEIVED: %s"g_ServerDataPacketNum ], iLeng_DataBufferiDataStart ] );
            
        }
        
/*else
        {
    
            log_amx( "removed_task" );
            socket_close( g_ServerData[ Socket ] );
            g_ServerData[ Socket ] = 0;
            g_ServerData[ PacketNum ] = 0;
            remove_task( 112233 );
        }*/
    
}
        



Does that mean it's working now?


All times are GMT -4. The time now is 15:45.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.