How would I put my socket in non-blocking mode?
Answer / chaitanya
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.
| Is This Answer Correct ? | 1 Yes | 0 No |
How can I be sure that UDP messages are received in order?
What is the difference between close() and shutdown()?
Can multiple clients connect to same socket?
What is Mac, and how is it different from PC? Which one is better for professional users, and why
1 Answers Evolving Systems, IBM,
Why do I get EPROTO from read()?
How to find other end of unix socket connection?
How can I find the full hostname (FQDN) of the system I am running on?
What is with the second parameter in bind()?
What are socket exceptions? What is out-of-band data?
What is LILO?
How does unix socket work?
How can I write a multi-homed server?