title: Android how to reuse Socket?
body: <p>how to reuse TCP Socket connection(possible setReuseAddress(true), but not work for me) for download multiple files from Server(Apache, HTTPD) in on connection without disconnect(and connect again).</p>
  
  <p>My code below..</p>
  
  <pre><code>public class ClientThread implements Runnable {
          public void run() {
              try {
  
                  Log.d("ClientActivity", "C: Connecting...");
                  SocketAddress sockaddr = new InetSocketAddress(serverIpAddress, SERVERPORT);
                  socket = new Socket();
  
                  socket.setReuseAddress(true);
                  socket.setKeepAlive(true);
                  socket.setSoLinger(true, 3000);
                  socket.connect(sockaddr);
  
                  if (socket.isConnected()) {
                      DataInputStream input = new DataInputStream(socket.getInputStream());
                      PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
  
                      output.println("GET /way/images/profile/1231 HTTP/1.1");
                      output.println("Host: 192.168.1.2");
                      output.println("User-Agent: Java");
                      output.println("Accept: */*");
                      output.println("Connection: Keep-Alive");
                      output.println("");
                      output.flush();
  
                      String line;
                      File file = new File("/sdcard/aaa.png");
                      if (!file.exists()) {
                          file.createNewFile();
                      }
                      FileOutputStream fileOut = new FileOutputStream(file);
                      System.out.println("Getting first file");
                      while ( (line = input.readLine()) != null ) {
                          System.out.println(line);
                          fileOut.write(line.getBytes());
                      }
                      System.out.println("First file finished");
                      fileOut.flush();
                      fileOut.close();
  
                      output.println("GET /way/images/profile/1231 HTTP/1.1");
                      output.println("Host: 192.168.1.2");
                      output.println("User-Agent: Java");
                      output.println("Accept: */*");
                      output.println("Connection: Keep-Alive");
                      output.println("");
                      output.flush();
  
                      file = new File("/sdcard/aaa1.png");
                      if (!file.exists()) {
                          file.createNewFile();
                      }
                      fileOut = new FileOutputStream(file);
                      System.out.println("Getting second file");
                      while ( (line = input.readLine()) != null ) {
                          System.out.println(line);
                          fileOut.write(line.getBytes());
                      }
                      System.out.println("Second file finished");
  
                      fileOut.flush();
                      fileOut.close();
                      input.close();
                      output.close();
  
                  }
                  Log.d("ClientActivity", "C: Closed.");
              } catch (Exception e) {
                  Log.e("ClientActivity", "C: Error", e);
                  connected = false;
              }
  
              finally {
                  try {
                      Log.d("ClientActivity", "Socket: Closed.");
                      socket.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      }
  </code></pre>
  
  <p>Thanks...</p>