title: resource leak : serversocket is never closed when using while loop for getting client requests
body: <p>I tried to find in exact solution for this problem but I'm not able to find it</p>
  
  <p>I have written a while loop to accept client sockets in server program</p>
  
  <p>because of this I'm unable to close the serversocket as it is always listening </p>
  
  <p>here is my server code</p>
  
  <pre><code>public class nserver {
  public static void main(String[] args) throws IOException {
      int port=4413;
      //server is running on port
      try(ServerSocket ss = new ServerSocket(port)){;
      // socket accepts data from the incoming clients
          while(true){
              Socket socket = ss.accept();
              // id I don't put the if case then this loop never breaks and 
              // although I wrote ss.close() - it will never reached - so use if case
              if(socket.equals(null))
                  break;
              System.out.println("Server is running on port "+port);
              //socket.getInetAddress gives address of client ip not the server ip as the socket is mada as client socket
              System.out.println("server recieved connection from "+socket.getInetAddress()+" : "+socket.getPort());
              //create two threads to send and receive from client
  
              rxClientData rx = new rxClientData(socket);
              Thread t = new Thread(rx);
              t.start();
  
              sdServerData sd = new sdServerData(socket);
              Thread t2 = new Thread(sd);
              t2.start();
  
            // if I put ss.close() here then it will accept only one client socket and serversocket will be closed after this line
          }
          ss.close();
      }
      catch(Exception e){
          System.out.println(e.getMessage());
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>how to close serversocket after my client socket requests,I have 3 clients</p>
  
  <p>with for loop I will have a limit of no.of client sockets,but a server should accept  so many no.of requests - so I used while loop</p>
  
  <p>for a server do we need to keep serversocket open in real world scenario ? - so that it accepts client requests all the time</p>