How would I put my socket in non-blocking mode?

How would I put my socket in non-blocking mode?

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

  Technically, fcntl(soc, F_SETFL, O_NONBLOCK) is incorrect since it
  clobbers all other file flags. Generally one gets away with it since
  the other flags (O_APPEND for example) don't really apply much to
  sockets. In a similarly rough vein, you would use fcntl(soc, F_SETFL,
  0) to go back to blocking mode.

  To do it right, use F_GETFL to get the current flags, set or clear the
  O_NONBLOCK flag, then use F_SETFL to set the flags.

  And yes, the flag can be changed either way at will.



Home
FAQ