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

Can multiple sockets use the same port?

0 Answers  


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

0 Answers  


What is af_inet in socket?

0 Answers  


What is difference between socket and websocket?

0 Answers  


Is there any advantage to handling the signal, rather than just ignoring it and checking for the EPIPE error? Are there any useful parameters passed to the signal catching function?

0 Answers  






What is a socket file?

0 Answers  


How does unix socket work?

0 Answers  


What are Sockets?

1 Answers  


How come I get address already in use from bind()?

1 Answers  


How can I force a socket to send the data in its buffer?

0 Answers  


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

1 Answers  


How many sockets can a port have?

0 Answers  


Categories