How can I put a timeout on connect()?

Answer Posted / chaitanya

First, create the socket and put it into non-blocking mode, then call connect(). There are three possibilities:

o connect succeeds: the connection has been successfully made (this usually only happens when connecting to the same machine)

o connect fails: obvious

o connect returns -1/EINPROGRESS. The connection attempt has begun, but not yet completed.

If the connection succeeds:

o the socket will select() as writable (and will also select as readable if data arrives)

If the connection fails:

o the socket will select as readable *and* writable, but either a read or write will return the error code from the connection attempt. Also, you can use getsockopt(SO_ERROR) to get the error status - but be careful; some systems return the error code in the result parameter of getsockopt(), but others (incorrectly) cause the getsockopt call itself to fail with the stored value as the error.

Is This Answer Correct ?    0 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

How can I write a multi-homed server?

1397


What is a socket connection?

671


What is a socket set used for?

683


What's better 6pt or 12pt sockets?

610


Whats the difference between select() and poll()?

1366






Where is the socket located?

637


How to find other end of unix socket connection?

655


What is the function of socket?

661


What are the types of sockets?

662


Is socket a hardware or software?

666


How many socket connections can a server handle?

619


How do I use TCP_NODELAY?

1241


What is difference between socket and websocket?

632


What is the purpose of socket?

661


Can multiple clients connect to same socket?

644