You can use setSoTimeout()
on the socket:
Socket echoSocket = new Socket(hostName, portNumber);
echoSocket.setSoTimeout(10000); // Readings are timeouting after 10 seconds
From the javadoc:
Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. With this option set to a non-zero timeout, a read() call on the InputStream associated with this Socket will block for only this amount of time. If the timeout expires, a
java.net.SocketTimeoutException
is raised, though the Socket is still valid. The option must be enabled prior to entering the blocking operation to have effect. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout.Parameters:
timeout the specified timeout, in milliseconds.
So, when you read the line, you can do that:
try {
System.out.println("echo: " + in.readLine());
} catch (SocketTimeoutException ste) {
// Do something
System.out.println("nothing received");
}