How can I put a timeout on connect()?



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

Post New Answer

More Unix Socket Programming Interview Questions

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

0 Answers  


How can I write a multi-homed server?

0 Answers  


What exactly does SO_KEEPALIVE do?

1 Answers  


When will my application receive SIGPIPE?

1 Answers  


How to find other end of unix socket connection?

0 Answers  






Is tcp or unix socket faster?

0 Answers  


After the chroot(), calls to socket() are failing. Why?

1 Answers  


What is socket programming in java?

0 Answers  


What is socket address?

0 Answers  


Why does it take so long to detect that the peer died?

0 Answers  


What does af mean in sockets?

0 Answers  


Why do we need sockets?

0 Answers  


Categories