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

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


Please Help Members By Posting Answers For Below Questions

Are unix sockets faster than tcp?

494


Why does the sockets buffer fill up sooner than expected?

995


How many sockets can a cpu have?

496


How is a socket created?

507


What is socket address?

569






What is the difference between a socket and a port?

464


How can I tell when a socket is closed on the other end?

971


Can multiple clients connect to same socket?

514


What is a socket set used for?

504


What are the types of sockets?

491


What is active unix domain sockets?

550


What is the purpose of socket?

501


What's the difference between a socket and a port?

458


Why do we need socket programming?

497


What is socket programming in java?

490