@Override public void close() throws IOException { synchronized (clients) { clients.remove(this); } super.close(); if (handle != null) { handle.disconnect(); } }