title: What is the difference between the setConnectionTimeout , setSoTimeout and "http.connection-manager.timeout" in apache HttpClient API
body: <p>What is the difference between the three(marked as comments) :</p>
  
  <pre><code>MultiThreadedHttpConnectionManager connManag =  new MultiThreadedHttpConnectionManager();
  HttpConnectionManagerParams managParams = connManag.getParams();
  
  managParams.setConnectionTimeout(connectiontimeout); // 1
  managParams.setSoTimeout(sotimeout); //2
  
  HttpMethodBase baseMethod = null;
  
  try {
    HttpClient client = new HttpClient(connManag);
    client.getParams().setParameter("http.connection-manager.timeout", poolTimeout); //3
  
    baseMethod = new GetMethod(…);
    int statusCode = client.executeMethod(…);
  
    …
  }
  catch (ConnectTimeoutException cte ){
    //Took too long to connect to remote host
  }
  catch (SocketTimeoutException ste){
    //Remote host didn’t respond in time
  }
  catch (Exception se){
    //Some other error occurred
  }
  finally {
    if (baseMethod != null)
      baseMethod.releaseConnection();
  }
  </code></pre>
  
  <p><code>1. setConnectionTimeout</code> - if it determines the timeout until connection is established.</p>
  
  <p><code>2. setSoTimeout</code> - if it determines the period of inactivity or time difference between two consecutive packets ,</p>
  
  <p>Then what does the below one do :</p>
  
  <p><code>3. "http.connection-manager.timeout"</code></p>