title: java: HTTP session between a HTTP server and a client
body: <p>I'm using com.sun.net.HttpServer class to build a http server with java like the following:</p>
  
  <pre><code>import java.io.IOException;
  import java.io.OutputStream;
  import java.net.InetSocketAddress;
  import java.nio.file.Files;
  import java.nio.file.Paths;
  import java.util.concurrent.Executors;
  
  import com.sun.net.httpserver.HttpExchange;
  import com.sun.net.httpserver.HttpHandler;
  import com.sun.net.httpserver.HttpServer;
  
  public class SimpleHttpServer {
  
    public static void main(String[] args) throws Exception {
      HttpServer server = HttpServer.create(new InetSocketAddress(8989), 0);
      server.createContext("/", new MyHandler());
      server.setExecutor(null); // creates a default executor
      server.start();
    }
  
    static class MyHandler implements HttpHandler {
      public void handle(HttpExchange t) throws IOException {
  
          //Read the request
          InputStream in = httpExchange.getRequestBody();
          StringWriter writer = new StringWriter();
          IOUtils.copy(in, writer);
          String inputString = writer.toString();
  
          //prepare the response
          httpExchange.sendResponseHeaders(200, "Hi my faithful client".length());
          OutputStream os = httpExchange.getResponseBody();
          os.write("Hi my faithful client".getBytes());
          os.close();
      }
    }
  }
  </code></pre>
  
  <p>I'm communicating with this server using this client:</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.OutputStreamWriter;
  import java.net.HttpURLConnection;
  import java.net.URL;
  
  public class Main {
      public static void main(String argv[]) throws IOException{
          String urlstr = "http://127.0.0.1:8989";
          URL url = new URL(urlstr);
          HttpURLConnection connection = (HttpURLConnection) url.openConnection();
          connection.setDoOutput(true);
  
          OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
          writer.write("Hello HTTP server!! I'm your client1");
  
          InputStream in  = connection.getInputStream();
          BufferedReader reader = new BufferedReader(new InputStreamReader(in));
          StringBuilder result = new StringBuilder();
          String line;
          while((line = reader.readLine()) != null) {
              result.append(line);
              System.out.println(result.toString());
          }
      }
  }
  </code></pre>
  
  <p>and it'fine working.
  but what I want now is that the server allows the client to communicate with him for a session that means a sequence of request/response not just only one. So it will be a loop of request/response. For this purpose I tried to add as a first step just one request to the client by adding to it those two lines:</p>
  
  <pre><code>writer.flush();
  writer.write("Hello HTTP server!! I'm your client2");
  </code></pre>
  
  <p>But it doesn't work. Just the first request is caught by the server.</p>
  
  <p>How can I change the code to achieve my purpose?</p>