How can I put a timeout on connect()?
Answer / 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 |
What is sae socket?
Why does connect() succeed even before my server did an accept()?
What is the function of socket?
Are sockets files?
How are unix domain sockets implemented?
Why do we need socket programming?
Can multiple sockets use the same port?
How can I bind() to a port number < 1024?
How would I put my socket in non-blocking mode?
What is the difference between connected and unconnected sockets?
What is Mac, and how is it different from PC? Which one is better for professional users, and why
1 Answers Evolving Systems, IBM,
Is tcp or unix socket faster?