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 |
Where is the socket located?
Are sockets files?
How can I force a socket to send the data in its buffer?
How do I get my server to find out the clients address / host- name?
Is there any advantage to handling the signal, rather than just ignoring it and checking for the EPIPE error? Are there any useful parameters passed to the signal catching function?
How can I tell when a socket is closed on the other end?
How does a socket work?
What is the difference between close() and shutdown()?
What is a socket set used for?
How is a socket created?
What is with the second parameter in bind()?
What are Sockets?