The timeout option was supported in the previous versions of the JDK through the java.net.Socket class. The timeout option actually limits the amount of time a read request from across a socket can wait, and if there is no response, the read operation is terminated.
The new support available with the 1.4 release for timeouts is associated with connect timeouts. It controls how long a request waits for the server to respond with a valid connection.
The code fragment below lets you set the connection timeout. Instead of passing the InetAddress(host) and port to the Socket construction, you create a SocketAddress to identify the connection point. The timeout is set after creating the Socket by calling its connect method, passing in the SocketAddress and the value for timeout.
int timeout = 2000; // two seconds SocketAddress socketAddress = new InetSocketAddress(host, port); Socket socket = new Socket(); socket.connect(socketAddress, timeout);
This establishes a connection if there are no exceptions thrown. However, if the connection does not establish within the specified time, a SocketTimeoutException is thrown. Moreover, if the server rejects the request, a ConnectionException with a message of connection refused is thrown.