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

What is socket programming in java?

491


Are unix sockets faster than tcp?

494


What's the difference between impact sockets and regular sockets?

474


What pieces of information make up a socket?

545


system choose one for me on the connect() call? Should I bind() a port number in my client program, or let the?

1163






What is the difference between a socket and a port?

465


What does af mean in sockets?

520


Are sockets files?

500


How is a socket created?

507


What is the purpose of socket?

503


How can I write a multi-homed server?

1275


Is socket a hardware or software?

503


Why do we need socket programming?

497


How do I convert a string into an internet address?

908


Is a socket a file?

474