title: Java Socket Handling Clients Disconnecting
body: <p>i am trying to make a chat program. The problem i am having is that my loop in the EchoThread always thinks that the connection is true. I have tried to use <code>if(s.isConnected() == false)</code> but that didn't work also i tried to do <code>if(s.isClosed() == true)</code> if you can help <strong><em>thank you in advance</em></strong>. Here is my code</p>
  
  <pre><code>import java.io.*;
  import java.net.*;
  import java.util.ArrayList;
  
  public class server {
  public ObjectInputStream input;
  public ServerSocket server;
  public Socket s;
  public ObjectOutputStream output;
  public ArrayList&lt;ObjectOutputStream&gt; outputs = new ArrayList&lt;ObjectOutputStream&gt;();
  public ArrayList&lt;Socket&gt; users = new ArrayList&lt;Socket&gt;();
  public class Accept implements Runnable {
      public void run() {
          try {
              server = new ServerSocket(55555, 100);
          } catch (IOException e) {
              e.printStackTrace();
          }
          while(true) {
              try {
                  s = server.accept();
                  new EchoThread(s).start();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      }
  }
  public class EchoThread extends Thread {
      private Socket s1;
      public EchoThread(Socket s) throws IOException {
          this.s1 = s;
      }
      public void run() {
          users.add(s1);
          try {
              outputs.add(new ObjectOutputStream(s1.getOutputStream()));
              newUser();
          } catch (IOException e) {
              System.out.println("Error 2");
          }
          while(s1.isConnected() == true) {
              // loops until socket looses connection
          }
          System.out.println("Disconnected");
          }
      }
  public class check implements Runnable {
  
      public void run() {
      }
  
  }
  public void newUser() {
      try {
          for(ObjectOutputStream o: outputs) {
                  o.writeObject(s.getInetAddress() + " Connected");
          }
      } catch (IOException e1) {
          System.out.println("Error 21");
      }
  }
  server() throws IOException {
      Thread t = new Thread(new Accept());
      t.start();
      Thread ch = new Thread(new check());
      ch.start();
      }
  public static void main(String[] args) throws IOException {
      new server();
  }
  }
  </code></pre>