Raised This Month: $ Target: $400
 0% 

[HELP] Sockets problem ( recieve )


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
red_bull2oo6
Senior Member
Join Date: Mar 2012
Location: Braila, Romania
Old 08-02-2013 , 14:10   Re: [HELP] Sockets problem ( recieve )
Reply With Quote #1

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 );
        }*/
    
}
        


Last edited by red_bull2oo6; 08-29-2013 at 14:56. Reason: i did it, thanks!
red_bull2oo6 is offline
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 08-02-2013 , 18:10   Re: [HELP] Sockets problem ( recieve )
Reply With Quote #2

Quote:
Originally Posted by red_bull2oo6 View Post
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?
__________________
Black Rose is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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