Hi,
I am trying to use select call in multi-client model.
Here's what my code does.
# Create a socket
$sockSel = new IO::Select( $servSock );
while ( @ready = $sockSel->can_read )
{
foreach $fh ( @ready )
if ( $fh == $servSock )
{
$newConn = $servSock->accept();
$sockSel->add($newConn);
}
else
{
$fh->recv($sockBuff,$maxLenMsg);
if($sockBuff)
{ # Process sockBuff
}
}
}
Now, when one client connects, my code blocks till the sockBuff from that client is processed. In the meantime, it cannot serve any other clients.
Is there a way around this? I want to serve the next client when the 1st client is getting processed. Can I avoid threads and still achieve this with select? Thanks
I am trying to use select call in multi-client model.
Here's what my code does.
# Create a socket
$sockSel = new IO::Select( $servSock );
while ( @ready = $sockSel->can_read )
{
foreach $fh ( @ready )
if ( $fh == $servSock )
{
$newConn = $servSock->accept();
$sockSel->add($newConn);
}
else
{
$fh->recv($sockBuff,$maxLenMsg);
if($sockBuff)
{ # Process sockBuff
}
}
}
Now, when one client connects, my code blocks till the sockBuff from that client is processed. In the meantime, it cannot serve any other clients.
Is there a way around this? I want to serve the next client when the 1st client is getting processed. Can I avoid threads and still achieve this with select? Thanks