title: java.net.SocketException: No buffer space available (maximum connections reached?): connect
body: <p>Hi I am using Apache HTTP Client 4.0 to upload some files on a server based on HTTPS protocol. The uploaded application is running 24x7. Today suddenly it started to throw this exception-</p>
  
  <pre><code>java.net.SocketException: No buffer space available (maximum connections reached?): connect
      at java.net.PlainSocketImpl.socketConnect(Native Method)
      at java.net.PlainSocketImpl.doConnect(Unknown Source)
      at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
      at java.net.PlainSocketImpl.connect(Unknown Source)
      at java.net.SocksSocketImpl.connect(Unknown Source)
      at java.net.Socket.connect(Unknown Source)
      at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
      at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:333)
      at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123)
      at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147)
      at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:101)
      at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:381)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
  </code></pre>
  
  <p>Can anyone please help me? I am totally clueless on what is going on?</p>
  
  <p>This is the source code which upload the file -</p>
  
  <pre><code>public File call() throws Exception {           
              HttpClient httpclient = new DefaultHttpClient();
          try{            
              httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);         
              /*
               * Create POST REQUEST
               */
              HttpPost httpPost = new HttpPost(this.URL);
              /*
               * Create MultipartRequestEntity
               */
              MultipartEntity multipartEntity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
              /*
               * Add POST Parameters
               */
              multipartEntity.addPart(parameters[0], this.fileBody);
              multipartEntity.addPart(parameters[1], new StringBody(this.TYPE));
              multipartEntity.addPart(parameters[2], new StringBody(this.MAAID));
              /*
               * Add this POST Method
               */
              httpPost.setEntity(multipartEntity);
              /*
               * Upload the file
               */
              HttpResponse response = httpclient.execute(httpPost);
              int responseCode = response.getStatusLine().getStatusCode();
              logger.info("Response Code of HTTP Connectivity ["+ responseCode + "], " +
                                                              "it means ["+ response.getStatusLine().getReasonPhrase()+"]");
              /*
               * Check the server Response
               */
              HttpEntity entity = response.getEntity();
              if(entity != null){
                  String status = EntityUtils.toString(entity);
                  logger.info("Status of file upload from Server &gt;&gt;"+ status+"&lt;&lt;");
                  entity.consumeContent();
                  if(status.equalsIgnoreCase("OK")){
                      return this.fileBody.getFile();
                  }
              }else{
                  logger.error("Unable to retrieve status of file upload from server");
              }           
          }catch(NoRouteToHostException e){
              logger.error("Internet connection to ["+ this.URL + "] is not available", e);
          }catch(SocketException e){
              logger.error("Unable to connect to "+ this.URL, e);
          }catch (Exception e) {          
              logger.error("Exception while uploading the file["+ this.fileBody.getFilename()+ "] on ["+ this.URL+"]", e);
          }finally{
              try{
                  httpclient.getConnectionManager().shutdown();
              }catch(Exception e){
                  // Ignore this exception
              }
          }
          return null;
      }
  </code></pre>