I have a Java application with three threads that open, each, a socket and connect to a server on different ports.
I set so_timeout on each of these sockets after the connection
The option must be enabled prior to entering the blocking operation to have effect.
maybe you should set it before the connection to the server is established, at least before calling read() on the socket.
But hard to say without the code...