Answer Posted / 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 |
Post New Answer View All Answers
What is socket programming in java?
What is the difference between read() and recv()?
Why do we need sockets?
What's better 6pt or 12pt sockets?
Can multiple clients connect to same socket?
Why do I get EPROTO from read()?
How does unix socket work?
What are the types of sockets?
Why sockets are used?
Why does it take so long to detect that the peer died?
How many sockets can a cpu have?
Are sockets files?
What are the pros/cons of select(), non-blocking I/O and SIGIO?
How do unix sockets work?
Can multiple sockets use the same port?