public class Connection { protected boolean authentificated = false; public void run() { String clientName = socket.getInetAddress().toString(); try { while (connectionOpen) { try { Object msg = inputStream.readObject(); handleIncomingMessage(clientName, msg); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } catch (IOException ex) { //ex.printStackTrace(); } finally { sendDisconnectedMessage(clientName); try { socket.close(); } catch (IOException ex) { ex.printStackTrace(); } } } protected void handleIncomingMessage(String name, Object msg) { if (msg instanceof TextMessage && authentificated) { original(name, msg); } if (msg instanceof ConnectionMessage) { ConnectionMessage connectionMessage = (ConnectionMessage)msg; if (connectionMessage.getPassword() == server.getPasswordHash()) { this.authentificated = true; sendConnectedMessage(socket.getInetAddress().toString()); } else { this.server.removeConnection(this); this.connectionOpen = false; try { socket.close(); } catch (IOException e) { //e.printStackTrace(); } } } } }