@Override
    public void run() {
        try {
            //objectOut.writeObject(this.serverKey.getPublic());
            this.clientKey = (PublicKey) objectIn.readObject();
            
            objectOut.writeObject(this.verschluesseleRSA(this.aesKey.getEncoded()));

            server.bearbeiteVerbindungsaufbau(this.socket.getInetAddress().getHostAddress(), this.socket.getPort());
            while (socket.isConnected()) {
                byte[] s = (byte[]) this.objectIn.readObject();
                this.server.bearbeiteNachricht(socket.getInetAddress().getHostAddress(), socket.getPort(), this.entschluessele(s));
            }
            socket.close();
            this.server.getClients().remove(socket.getInetAddress().getHostAddress() + socket.getPort());
            this.stop();

        } catch (ClassNotFoundException | IOException ex) {

            try {
                socket.close();
            } catch (IOException ex1) {
                Logger.getLogger(Serververbindung.class.getName()).log(Level.SEVERE, null, ex1);
            }
            this.server.bearbeiteVerbindungsende(socket.getInetAddress().getHostAddress(), socket.getPort());
            this.server.beendeVerbindung(socket.getInetAddress().getHostAddress(), socket.getPort());

            this.stop();

        }
    }