Class CLIENTPROZESS

java.lang.Object
  extended by java.lang.Thread
      extended by CLIENTPROZESS
All Implemented Interfaces:
java.lang.Runnable

 class CLIENTPROZESS
extends java.lang.Thread

serverseitig laufender Prozess je Client zur Bearbeitung der Kommunikation einer Clientverbindung
- über die Startbotschaft, die im Konstruktor übergeben wird, kann das Senden des Stoppsignals für den Client veranlasst werden.
- das frühere Serververhalten ist in diese Klasse integriert.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private static int angemeldet
          Konstante für den Zustand angemeldet (in der clientprozessliste des Servers aufgenommen) des Threads
private  java.net.Socket clientSocket
          Socket des Clients
private  CHATSERVER server
          Referenz auf den Server
private  java.lang.String spitzname
          Spitzname des Clients, muss einmalig sein!
private  java.io.BufferedReader vomClient
          Datenstrom vom Client
private static int wartend
          Konstante für den Zustand Wartend des Threads
private  java.io.PrintWriter zumClient
          Datenstrom zum Client
private  int zustand
          speichert den aktuellen Zustand des Clientprozesses
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
CLIENTPROZESS(java.net.Socket clientSocket, CHATSERVER server, java.lang.String startbotschaft)
          Konstruktor des Clientprozesses
 
Method Summary
private  void ClientVerbindungBeenden()
          beendet die Clientverbindung
 void ClientVerbindungStarten(java.lang.String startbotschaft)
          Verbindung herstellen, falls die Startbotschaft "toomuchclients" lautet, wird das Beendensignal an den Client gesendet!
private  boolean EingabeVerarbeiten(java.lang.String textvomclient)
          Implementierung des Zustandsdiagramms des Prozesses
 void run()
          liest die Nachrichten vom Client, ermittelt die Antwort schickt die Antwort zum Client.
 void Senden(java.lang.String nachricht)
          Nachricht an den zugehörigen Client senden.
 java.lang.String SpitznameHolen()
          gibt den Spitznamen des Chatters zurück
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

server

private CHATSERVER server
Referenz auf den Server


clientSocket

private java.net.Socket clientSocket
Socket des Clients


zumClient

private java.io.PrintWriter zumClient
Datenstrom zum Client


vomClient

private java.io.BufferedReader vomClient
Datenstrom vom Client


spitzname

private java.lang.String spitzname
Spitzname des Clients, muss einmalig sein!


wartend

private static final int wartend
Konstante für den Zustand Wartend des Threads

See Also:
Constant Field Values

angemeldet

private static final int angemeldet
Konstante für den Zustand angemeldet (in der clientprozessliste des Servers aufgenommen) des Threads

See Also:
Constant Field Values

zustand

private int zustand
speichert den aktuellen Zustand des Clientprozesses

Constructor Detail

CLIENTPROZESS

public CLIENTPROZESS(java.net.Socket clientSocket,
                     CHATSERVER server,
                     java.lang.String startbotschaft)
              throws java.io.IOException
Konstruktor des Clientprozesses

Parameters:
clientSocket - die Socketverbindung, über die die Kommunikation stattfindet.
server - Referenz auf den Server, wird beim Beenden des Prozesses benötigt.
startbotschaft - ist die Startbotschaft gleich "toomuchclients" so wird das Clientstopsignal gesendet.
Throws:
java.io.IOException - eine Ausnahme tritt auf falls:
- der Server nicht gestartet werden kann (weil beispielsweise der Port nicht frei ist)
- die Clientverbindung gestört bzw. unterbrochen wurde.
Method Detail

ClientVerbindungStarten

public void ClientVerbindungStarten(java.lang.String startbotschaft)
                             throws java.io.IOException
Verbindung herstellen, falls die Startbotschaft "toomuchclients" lautet, wird das Beendensignal an den Client gesendet! der Thread wird in diesem Fall nicht vom Server gestartet und braucht deshalb auch nicht beendet werden.

Parameters:
startbotschaft -
Throws:
java.io.IOException

EingabeVerarbeiten

private boolean EingabeVerarbeiten(java.lang.String textvomclient)
Implementierung des Zustandsdiagramms des Prozesses

Parameters:
textvomclient - der zu verarbeitende Text
Returns:
false, falls der Client beendet werden soll.

SpitznameHolen

public java.lang.String SpitznameHolen()
gibt den Spitznamen des Chatters zurück

Returns:
der Wert des Attributs spitzname

Senden

public void Senden(java.lang.String nachricht)
Nachricht an den zugehörigen Client senden.

Parameters:
nachricht - der Text der Nachricht

ClientVerbindungBeenden

private void ClientVerbindungBeenden()
                              throws java.io.IOException
beendet die Clientverbindung

Throws:
java.io.IOException

run

public void run()
liest die Nachrichten vom Client, ermittelt die Antwort schickt die Antwort zum Client.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread