Advanced Socket Programming
In the following sections, we cover advanced issues that arise in real-world programs. We first show you how to use timeouts and interrupts to deal with connection errors. We show how the “half-close” mechanism can simplify request protocol, and we finish with a section on Internet addresses.
In real-life programs, you don't just want to read from a socket, because the read methods will block until data are available. If the host is unreachable, then your application waits for a long time and you are at the mercy of the underlying operating system to time out eventually.
Instead, you should decide what timeout value is reasonable for your particular application. Then, call the setSoTimeout method to ...