Listening socket

Posted by hoodoos on Stack Overflow See other posts from Stack Overflow or by hoodoos
Published on 2010-05-05T07:34:47Z Indexed on 2010/05/05 7:38 UTC
Read the original article Hit count: 216

Filed under:
|
|

I got a strange problem, I never actually expirienced this before, here is the code of the server (client is firefox in this case), the way I create it:

_Socket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
_Socket.Bind( new IPEndPoint( Settings.IP, Settings.Port ) );
_Socket.Listen( 1000 );
_Socket.Blocking = false;

the way i accept connection:

while( _IsWorking )
{
    if( listener.Socket.Poll( -1, SelectMode.SelectRead ) )
    {
        Socket clientSocket = listener.Socket.Accept();
        clientSocket.Blocking = false;
        clientSocket.SetSocketOption( SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true );
    }
}

So I'm expecting it hang on listener.Socket.Poll till new connection comes, but after first one comes it hangs on poll forever. I tried to poll it constantly with smaller delay, let's say 10 microseconds, then it never goes in SelectMode.SelectRead. I guess it maybe somehow related on client's socket reuse? Maybe I don't shutdown client socket propertly and client(firefox) decides to use an old socket?

I disconnect client socket this way:

Context.Socket.Shutdown( SocketShutdown.Both ); // context is just a wrapper around socket
Context.Socket.Close();

What may cause that problem?

© Stack Overflow or respective owner

Related posts about sockets

Related posts about socket