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 |
Can multiple sockets use the same port?
How to find other end of unix socket connection?
How can I read ICMP errors from connected UDP sockets?
How do I properly close a socket?
How often should I re-transmit un-acknowleged messages?
Why do I get connection refused when the server is not running?
Is tcp or unix socket faster?
What is the difference between close() and shutdown()?
What is socket address?
Are unix sockets faster than tcp?
How does unix socket work?
How can I write a multi-homed server?