Why does connect() succeed even before my server did an

  From Andrew Gierth (andrew@erlenstar.demon.co.uk):

  Once you have done a listen() call on your socket, the kernel is
  primed to accept connections on it. The usual UNIX implementation of
  this works by immediately completing the SYN handshake for any
  incoming valid SYN segments (connection attempts), creating the socket
  for the new connection, and keeping this new socket on an internal
  queue ready for the accept() call. So the socket is fully open before
  the accept is done.

  The other factor in this is the 'backlog' parameter for listen(); that
  defines how many of these completed connections can be queued at one
  time.  If the specified number is exceeded, then new incoming connects
  are simply ignored (which causes them to be retried).

Suggest a Site