public void run() {
		String response;

		sTrace.debug("TCP Server Thread " + name
				+ " is running until QUIT is received!");

		try {
			/* Socket-Basisstreams durch spezielle Streams filtern */
			inFromClient = new BufferedReader(new InputStreamReader(
					socket.getInputStream()));
			outToClient = new DataOutputStream(socket.getOutputStream());

			writeToClient("+OK Hello Client "
					+ socket.getInetAddress().getHostAddress());

			while (currentState != POP3State.Update) {
				/* String vom Client empfangen und in Gro�buchstaben umwandeln */
				response = readFromClient();
				// Nachricht vom Client verarbeiten
				sTrace.debug("Got Message " + response);
				response = computeMessage(response);
				if(response != ""){
					writeToClient(response);
				}
			}
			// L�schen der Mails nach erreichen des Update Status
			deleteMails();

			/* Socket-Streams schlie�en --> Verbindungsabbau */
			socket.close();
		} catch (IOException e) {
			deleteMailsOnException();
			sTrace.error("Connection aborted by client!");
		} catch (IllegalStateException e) {
			sTrace.error("");
			e.printStackTrace();
		}

		sTrace.debug("TCP Server Thread " + name + " stopped!");
	}