[SDL] SDL_Net: Multiserver exhausting networking resources.

Miguel Pragier pragier at gmail.com
Mon Jun 4 12:27:48 PDT 2007


That's the question I was waiting for.

Look the routine wich turnOn the listeners:


IPaddress ip;

Servidor.SocketSet = SDLNet_AllocSocketSet(QTD_MAX_CLIENTES+2);

if( !Servidor.SocketSet ) exit(-1);

if(SDLNet_ResolveHost(&ip, NULL, Config.Porta_Arcano) == -1)     exit(-1);

Servidor.sckArcano = SDLNet_TCP_Open(&ip);

if( !Servidor.sckArcano ) exit(-1);

SDLNet_TCP_AddSocket(Servidor.SocketSet, Servidor.sckArcano);



Now, the NewClientAdmission routine:

void SRV_TestarSockets()

{

int rArc;

int i = 0;

rArc = SDLNet_CheckSockets(Servidor.SocketSet, 10);

if( rArc == -1 )

{

LOG_FRegistrar("SDLNet_CheckSockets: %s\n", SDLNet_GetError());

return;

}

if( !rArc )

return;

if( SDLNet_SocketReady(Servidor.sckArcano) )

{

SRV_Registrar_Arcano();

Servidor.HouveAtividade = 1;

return;

}

for(i=0; i<Servidor.ClientesConectados; i++)

{

if( SDLNet_SocketReady(Clientes[i].sckArcano) )

{

char msg[STR_100];

char str[STR_100];

int r;

memset(msg, 0, STR_100);

memset(str, 0, STR_100);

r = SDLNet_TCP_Recv(Clientes[i].sckArcano, msg, STR_100);

if( r == -1 )

{

SRV_DesconectarArcano(i);

Servidor.HouveAtividade = 1;

continue;

}

if( r == 0 )

{

SRV_DesconectarArcano(i);

Servidor.HouveAtividade = 1;

continue;

}

SRV_ExtrairComando(msg, str);

if( strlen(str) > 0 )

{

Servidor.HouveAtividade = 1;

SRV_InterpretarComando( i, str );

}

}

}

for(i=0; i<Servidor.ClientesConectados; i++)

{

if( SDLNet_SocketReady(Clientes[i].sckAcumulado) )

{

char msg[STR_100];

char str[STR_100];

int r;

memset(msg, 0, STR_100);

memset(str, 0, STR_100);

r = SDLNet_TCP_Recv(Clientes[i].sckAcumulado, msg, STR_100);

if( ( r == -1 ) || ( r == 0 ) )

{

Clientes[i].sckAcumulado = NULL;

continue;

}

SRV_ExtrairComando(msg, str);

if( strlen(str) > 0 )

{

SRV_InterpretarComando( i, str );

Servidor.HouveAtividade = 1;

}

}

}

}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20070604/eaba63fe/attachment-0001.htm 


More information about the SDL mailing list