Raised This Month: $ Target: $400
 0% 

Reading data


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 08-11-2013 , 22:17   Re: Reading data
Reply With Quote #1

I made some small changes.

Code:
set_task( 0.1, "task_ReciveData", 112233, _, _, "b", 0 );
-->
Code:
set_task( 0.1, "task_ReciveData" );

Code:
    if( socket_change( g_ServerData[ Socket ], 0 ) )       {           // ...     }
-->
Code:
    if( socket_change( g_ServerData[ Socket ], 0 ) )       {           // ...     }     else         set_task( 0.1, "task_ReciveData" );

Code:
if( ( iLen = socket_recv( g_ServerData[ Socket ], g_DataBuffer, sizeof( g_DataBuffer ) ) ) )
-->

Code:
while( ( iLen = socket_recv( g_ServerData[ Socket ], g_DataBuffer, sizeof( g_DataBuffer ) ) ) )

But your basic error was this:
Code:
    formatex( szRequest, sizeof ( szRequest ) -1,"GET /As HTTP/1.1^r^nHost: %s^r^n^r^n", g_ServerData[ RemoteFile ], g_ServerData[ Server ] ); //                                                     ^
Should be like this obviously
Code:
    formatex( szRequest, sizeof ( szRequest ) -1,"GET /%s HTTP/1.1^r^nHost: %s^r^n^r^n", g_ServerData[ RemoteFile ], g_ServerData[ Server ] ); //                                                     ^

Code:
#include < amxmodx >   #include < sockets >   #define PLUGIN "Socket Test#2"   #define VERSION "1.0"   enum _:iServerInfos   {       Server[ 64 ],       RemoteFile[ 64 ],       Socket,       Error,       PacketNum         }   new g_ServerData[ iServerInfos ];   new szRequest[ 128 ];   new g_DataBuffer[ 4096 ];   public plugin_init( )   {       register_plugin( PLUGIN, VERSION, "Askhanar" );             FormatHostAndRequest( );       register_concmd( "test", "GetPlayerInfo" );             set_task( 5.0, "GetPlayerInfo", 112233 );             // Add your code here...   }   FormatHostAndRequest( )   {       g_ServerData[ Server ] = "www.gametracker.com";       g_ServerData[ RemoteFile ] = "player/lager/193.104.68.21:27050/";             formatex( szRequest, sizeof ( szRequest ) -1,"GET /%s HTTP/1.1^r^nHost: %s^r^n^r^n", g_ServerData[ RemoteFile ], g_ServerData[ Server ] );   }   public GetPlayerInfo( )   {             if( g_ServerData[ Socket ] > 0 )           socket_close( g_ServerData[ Socket ] );             g_ServerData[ Socket ] = socket_open( g_ServerData[ Server ], 80, SOCKET_TCP, g_ServerData[ Error ] );             if( g_ServerData[ Error ] == 0 && g_ServerData[ Socket ] > 0 )       {           log_amx( "connected, sending: %s", szRequest );           socket_send( g_ServerData[ Socket ], szRequest, sizeof( szRequest ) );           g_ServerData[ PacketNum ] = 0;                     set_task( 0.1, "task_ReciveData" );     }       else       {           switch( g_ServerData[ Error ] )           {               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_close( g_ServerData[ Socket ] );       g_ServerData[ Socket ] = 0;       g_ServerData[ PacketNum ] = 0;       remove_task( 112233 );   }   public task_ReciveData( )   {       log_amx( "task_rec" );       static iDataStart       new iLen;             if( socket_change( g_ServerData[ Socket ], 0 ) )       {                     while( ( iLen = socket_recv( g_ServerData[ Socket ], g_DataBuffer, sizeof( g_DataBuffer ) ) ) )           {                             if ( ( ++g_ServerData[ PacketNum ] == 1 ) && ( ( iDataStart = strfind( g_DataBuffer , "^r^n^r^n" ) ) > -1 ) )               {                   iDataStart += 4;               }               else               {                   iDataStart = 0;               }                             log_amx( "[%i] [ %i ] RECEIVED: %s", g_ServerData[ PacketNum ], iLen, g_DataBuffer[ iDataStart ] );                         }           /*else           {                     log_amx( "removed_task" );               socket_close( g_ServerData[ Socket ] );               g_ServerData[ Socket ] = 0;               g_ServerData[ PacketNum ] = 0;               remove_task( 112233 );           }*/       }     else         set_task( 0.1, "task_ReciveData" );           }
__________________

Last edited by Black Rose; 08-11-2013 at 22:21.
Black Rose is offline
Turle
Junior Member
Join Date: Aug 2013
Old 08-12-2013 , 07:34   Re: Reading data
Reply With Quote #2

It crashes my server.

But it works, meaning that it gets data in logs.

And one more question, how to select just a certain data, for example this page: http://www.gametracker.com/player/lo...163.197:27015/
to get just:
PHP Code:
PLAYER SUMMARY
First Seen
Aug 122013 
Last Seen
Online Now
CURRENT STATS
Score

Minutes Played

Score per Minute

Rank on Server
#10 
Thanks a lot for helping me!

Last edited by Turle; 08-12-2013 at 09:36.
Turle is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 08-12-2013 , 19:29   Re: Reading data
Reply With Quote #3

Quote:
Originally Posted by Turle View Post
And one more question, how to select just a certain data, for example this page: http://www.gametracker.com/player/lo...163.197:27015/
to get just:
PHP Code:
PLAYER SUMMARY
First Seen
Aug 122013 
Last Seen
Online Now
CURRENT STATS
Score

Minutes Played

Score per Minute

Rank on Server
#10 
You parse the HTML accordingly (which is probably not that easy).

Is either of the IPs that you posted your server?
__________________

Last edited by fysiks; 08-12-2013 at 19:29.
fysiks 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:56.


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