public synchronized void logout(JSONObject req) {
   Long longseq = new Long((Long) req.get("sequence"));
   Integer seq = longseq.intValue();
   JSONObject res = new JSONObject();
   String name = (String) req.get("params");
   System.out.println("Logout von Client mit Name: " + name);
   Socket t = this.keyList.get(name);
   ServerGUI.getInstance().setClientInactive(name);
   this.keyList.remove(name);
   System.out.println("In KeyList: " + keyList.toString());
   this.names.remove(name);
   this.listWithoutName.remove(t);
   ServerGUI.getInstance().id--;
   res.put("sequence", seq);
   res.put("statuscode", ServerGUI.STATUS_OK);
   res.put("response", "memberLeft");
   res.put("author", "Server");
   res.put("msg", name + " hat den Chat verlassen.");
   for (Socket s : listWithoutName) {
     try {
       PrintWriter p = new PrintWriter(s.getOutputStream(), true);
       p.println(res);
     } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
   }
 }
  /**
   * Methode, die die Verbindung vom Spamsockets vom Server trennt.
   *
   * @param s
   */
  public synchronized void removeSpamConnection(Socket s) {
    this.listWithoutName.remove(s);
    if (ServerGUI.getInstance().id > 0) {
      ServerGUI.getInstance().id--;
    }

    System.out.println("ID ist nun nach Remove: " + ServerGUI.getInstance().id);
    JSONObject res = new JSONObject();
    res.put("statuscode", ServerGUI.STATUS_UNAUTHORIZED);
    res.put("response", "Hau ab, du Spammer!");
    try {
      PrintWriter p = new PrintWriter(s.getOutputStream(), true);
      p.println(res);
      s.close();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  public void run() {
    this.setName("ServerThread Nummer:" + ServerThread.threadNo);
    System.out.println(this.getName() + " ist gestartet...");
    System.out.println("Thread Status: " + this.getState());
    ServerThread.threadNo++;
    System.out.println("Beginn Run Methode: ");
    try {

      System.out.println("Serversocket wird angelegt...");
      synchronized (ServerThread.lock) {
        server = new ServerSocket(ServerGUI.getInstance().getPortNumber());
        System.out.println("Serversocket läuft über Port: " + server.getLocalPort());
        server.setReuseAddress(true);
      }

    } catch (IOException ex) {
      ex.printStackTrace();
    }
    while (true) {

      try {

        System.out.println("Nun bin ich vor Server accept...");
        try {

          this.client = server.accept();
          ServerGUI.getInstance().id++;

        } catch (SocketException ex) {
          client.close();
          return;
        }
        System.out.println("Nun bin ich nach dem  Server accept...");
        System.out.println(this.getState());
        synchronized (ServerThread.lock) {
          new ClientHandler(client).start();
          System.out.println(
              "Neuer Client von "
                  + server.getInetAddress()
                  + " auf Client's Port  "
                  + client.getPort());
          if (ServerGUI.getInstance().id <= 5) {
            listWithoutName.add(this.client);
            System.out.println(
                "Client no."
                    + ServerGUI.getInstance().id
                    + "on Port"
                    + client.getPort()
                    + "added to the Clientpool of MailBox Server.");

          } else {
            // TODO Client mit Benachrichtung abweisen.
            Scanner in = new Scanner(this.client.getInputStream());
            out = new PrintWriter(this.client.getOutputStream(), true);
            System.out.println("Lehne Anfrage ab...");
            String s = in.nextLine();
            System.out.println("Input Stream(Request von Client): " + s.toString());
            JSONParser parser = new JSONParser();
            Object obj;
            try {
              obj = parser.parse(s.toString());
              JSONObject req = (JSONObject) obj;
              Long longseq = new Long((Long) req.get("sequence"));
              Integer seq = longseq.intValue();
              JSONObject res = new JSONObject();
              res.put("statuscode", ServerGUI.STATUS_SERVICE_UNAVAILABLE);
              res.put("sequence", seq);
              res.put("response", "server_full");
              out.println(res);
              client.close();

            } catch (ParseException e) {
              // TODO Auto-generated catch block
              client.close();

              ServerGUI.getInstance().id--;
              e.printStackTrace();
            }
          }
        } // hier muss sync
      } catch (IOException e) {

        e.printStackTrace();
      }
    }
  }