Page 1 of 1

Enable TCP socket option KEEPALIVE

Posted: Mon Aug 10, 2015 12:47 pm
by falk
Hello Jarl and all others,
here is a question about the possibility of enabling keep-alive packets for socket connections on client-side.
The goal is that the client will be notified via the TCP keep-alive feature if a connection faces problems.

With access to the underlying native handler and some modifications to RCF 2.1.0.0 it was possible to implement this feature under Windows. Can you take a look at the code patch and tell me if you see any impacts for the other RCF functionality?
One important point is that the Win-function WSAAsyncSelect converts blocking sockets into nonblocking. But since the method TcpClientTransport::setupSocket makes this anyway, i do not think thats an issue.

There is a server and a client programm attached too to test the keep-alive. Run the server and the client (maybe adjust the hardcoded ip in the sources before) and then pull a cable somewhere between the client and server. After a timeout of five seconds the client will receive a notification that the connection is closed. This notification is tested with a read on the socket which results in an socket error (WSAECONNRESET).