Raised This Month: $51 Target: $400
 12% 

Modulo sockets con multiples hilos?


  
 
 
Thread Tools Display Modes
Author Message
Neeeeeeeeeel.-
Some Guy Yellin'
Join Date: Jul 2010
Location: Argentina
Old 05-04-2013 , 10:55   Modulo sockets con multiples hilos?
#1

Hay algun sockets publicado que use threads? Si la respuesta es no, ¿Qué tan dificil sería agregarle multi threading para cada conexión? Pregunto porque cuando se intenta hacer una conexión TCP y no encuentra el servidor a donde apunta, se hace un loop que cuelga el juego hasta que llegue el timeout a la función que intenta conectar.
__________________
Neeeeeeeeeel.- is offline
Send a message via Skype™ to Neeeeeeeeeel.-
meTaLiCroSS
Gaze Upon My Hat
Join Date: Feb 2009
Location: Viña del Mar, Chile
Old 05-04-2013 , 11:17   Re: Modulo sockets con multiples hilos?
#2

Revisaste los modulos de sockets en Module Coding?
__________________
Quote:
Originally Posted by joropito View Post
You're right Metalicross
meTaLiCroSS is offline
Neeeeeeeeeel.-
Some Guy Yellin'
Join Date: Jul 2010
Location: Argentina
Old 05-04-2013 , 11:41   Re: Modulo sockets con multiples hilos?
#3

Quote:
Originally Posted by meTaLiCroSS View Post
Revisaste los modulos de sockets en Module Coding?
I didn't my dear...

Go steam negro
__________________
Neeeeeeeeeel.- is offline
Send a message via Skype™ to Neeeeeeeeeel.-
Javivi
AlliedModders Donor
Join Date: Dec 2008
Old 05-04-2013 , 13:22   Re: Modulo sockets con multiples hilos?
#4

Usa esta version que modifico joaquim:
https://forums.alliedmods.net/showth...895#post987895

Bugsy tambien hizo otra version del modulo sockets, pero a mi personalmente me daba error al intentar conectar usando linux... se supone que el bug ya lo arreglo, pero no lo he probado ni nada, asi que usa la version de joaquim.

Codigo de testeo probug de hace unos 4 años, escribe en consola sockettest 0/1 y en los ficheros .log veras la info
PHP Code:
#include < amxmodx >
#include < sockets_hz >

#define WEBHOST "www.google.com"

new g_socketFloat:g_socketwait

public plugin_init( )
    
register_concmd"sockettest""testsocket" )
    
public 
testsocketid )
{
    new 
errortype]
    
    
read_argv1typecharsmaxtype ) )

    switch( 
str_to_numtype ) )
    {
        case 
0:
        {
            
log_to_file"sockettest.log""Trying to create a socket (non blocking)^n" )
    
            
g_socket socket_open_non_blockingWEBHOST80SOCKET_TCPerror )
        }
        case 
1:
        {
            
log_to_file"sockettest.log""Trying to create a socket (blocking)^n" )
    
            
g_socket socket_openWEBHOST80SOCKET_TCPerror )
        }
    }
    
    if( 
g_socket && !error )
    {
        
log_to_file"sockettest.log""Socket created %d^n"g_socket )
        
        
set_task1.0"check_socket"1456, .flags="b" )
    }
    else
        
log_to_file"sockettest.log""Failed to create a socket [error:%d]^n"error )
}

public 
check_sockettask )
{
    if( 
socket_is_writableg_socket ) )
    {
        
log_to_file"sockettest.log""Socket avaiable^n" )
        
        
remove_tasktask )
        
g_socketwait get_gametime( )
        
        new 
request200 ]
        
formatexrequestcharsmaxrequest ), "GET /index.php HTTP/1.1^r^nHost: %s^r^nConnection: close^r^n^r^n"WEBHOST )
        
        
log_to_file"sockettest.log""Sending ^n%s^n"request )

        
socket_sendg_socketrequestcharsmaxrequest ) )

        
log_to_file"sockettest.log""Sent!^n" )

        
set_task0.5 "recvdata" 1223, .flags "b" )
    }
    else
    {
        
log_to_file"sockettest.log""Socket not avaiable^n" )
        
        if( ( 
get_gametime( ) - g_socketwait ) >= 5.0 )
        {
            
log_to_file"sockettest.log""Socket timed out^n" )
        
            
socket_closeg_socket )
            
remove_tasktask )
        }
    }
}

public 
recvdatatask )
{
    
log_to_file"sockettest.log""Waiting reponse...^n" )
    
    if ( 
socket_changeg_socket) )
    {
        static 
data3000 ], pos
    
        socket_recv
g_socketdatapos ] , charsmaxdata ) - pos )

        
pos strlendata )
        
        if( 
containidata "302 Found" ) > -|| containidata "200 OK" ) > -|| containidata"404 Not Found" ) )
        {    
            
log_to_file"sockettest.log""REPONSE: ( len: %d )^n%s^n"strlendata ), data )

            
socket_closeg_socket )
            
remove_tasktask )
        }
        
        
g_socketwait get_gametime( )
    }
    
    if( ( 
get_gametime( ) - g_socketwait ) >= 5.0 )
    {
        
log_to_file"sockettest.log""Socket timed out^n" )
        
        
socket_closeg_socket )
        
remove_tasktask )
    }

Attached Files
File Type: 7z sockets_hz.7z (34.5 KB, 39 views)
File Type: sma Get Plugin or Get Source (sockettest.sma - 535 views - 2.5 KB)
__________________

Last edited by Javivi; 05-04-2013 at 13:32.
Javivi is offline
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 05-04-2013 , 17:22   Re: Modulo sockets con multiples hilos?
#5

Así por default tu puedes colocarle socket_unblock(/*socket_handle*/) abajo del listen (socket_listen) y después de que haya sido aceptada la conexión (socket_accept), no sé si sea necesario usar socket_unblock(/*socket_handle*/) después de socket_open al menos yo nunca lo usé ahí.
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 05-04-2013 at 17:23.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
Neeeeeeeeeel.-
Some Guy Yellin'
Join Date: Jul 2010
Location: Argentina
Old 05-04-2013 , 19:06   Re: Modulo sockets con multiples hilos?
#6

Gracias Javivi, voy a probarlo.
__________________
Neeeeeeeeeel.- is offline
Send a message via Skype™ to Neeeeeeeeeel.-
 



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 09:27.


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