Witam mam taki problem że serwer nie wie kiedy przestać wyświetlać IP na liście jak to zrobić?
Oto mój kod:
Klasa główna:

package common;

import client.Client;
import server.Server;

public class Main {
	public static void main(String[] args) throws Exception {
		new Thread(new Runnable() {
			public void run() {
				try {
					new Server(25565);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}).start();
		new Thread(new Runnable() {
			public void run() {
				try {
					new Client("localhost", 25565);
				} catch (Exception e) {
					e.printStackTrace();
				}
				
			}
		}).start();
		new Thread(new Runnable() {
			public void run() {
				try {
					Client c = new Client("localhost", 25565);
					c.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
				
			}
		}).start();
	}
}

Klasa Serwera:

package server;

import java.awt.Color;
import java.awt.Dimension;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JFrame;
import javax.swing.JTextArea;

public class Server extends ServerSocket {
	ArrayList<Socket> sockets = new ArrayList<Socket>();
	JFrame frame = new JFrame("Server");
	JTextArea area = new JTextArea();
	public Server(int port) throws Exception {
		super(port);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setPreferredSize(new Dimension(400, 500));
		frame.pack();
		frame.setLayout(null);
		area.setSize(new Dimension(370, 450));
		area.setBackground(Color.DARK_GRAY);
		area.setForeground(Color.WHITE);
		area.setLocation(10, 10);
		frame.add(area);
		frame.setVisible(true);
		new Timer().scheduleAtFixedRate(new TimerTask() {
			public void run() {
				for(Socket so : sockets) {
					if(!so.isConnected()) {
						System.out.println("D");
						sockets.remove(so);
					}
				}
				String s = "";
				for(Socket so : sockets) {
					s = s + so.getRemoteSocketAddress().toString().replaceAll("/", "") + "\n";
				}
				area.setText(s);
			}
		}, 600, 600);
		while(true) {
			final Socket socket = accept();
			sockets.add(socket);
			new Thread(new Runnable() {
				public void run() {
					try {
						String s = "";
						for(Socket so : sockets) {
							s = s + so.getRemoteSocketAddress().toString().replaceAll("/", "") + "\n";
						}
						area.setText(s);
					} catch(Exception ex) {}
				}
			}).start();
		}
	}
}

Klasa Klienta:

package client;
import java.net.Socket;


public class Client extends Socket {
	public Client(String host, int port) throws Exception {
		super(host, port);
	}
}