Beispiele zu Kapitel 4: Netzwerke

Beispiel 1: TCPIPClient

Das Beispiel stammt aus [Schader, Kapitel 20]. Das Programm realisiert ein TCP Client-Programm und erwartet als Kommandozeilenparameter den Hostnamen und die Port-Nummer des Servers. Nach Verbindungsaufbau zum Server wartet das Programm für 100ms auf eine Nachricht des Servers, danach kann der Benutzer Daten per Tastatur eingeben, die an den Server geschickt werden. Im Anschluss wartet das Programm wieder für 100ms usw.


Beispiel 2: DumpServer

Das Beispiel stammt aus [Schader, Kapitel 20]. Das Programm realisiert ein TCP Server-Programm und erwartet als Kommandozeilenparameter die Port-Nummer des Servers. Das Programm wartet auf einen Verbindungsaufbau. Verbindet sich ein Client mit dem Server werden alle empfangenen Daten auf der Konsole ausgegeben. Es kann maximal ein Client gleichzeitig bedient werden.


Beispiel 3: ThreadedServer

Das Beispiel realisiert einen Server, der beliebige Objekte in einer HashMap verwalten kann. Als hash key dient das Ergebnis der Methode toString des Objektes. Objekte der Klasse ThreadedServer erzeugen einen ServerSocket und lauschen auf eingehende Verbindungen von Clients. Wird eine Verbindung hergestellt, erzeugt das ThreadedServer-Objekt ein Connection-Objekt. Objekte dieser Klasse verwalten eine Verbindung zu genau einem Client. Die interne Klasse SocketHandler implementiert einen Thread, der in einer Endlosschleife Kommandos vom Client entgegennimmt und abarbeitet. Gegenwärtig kennt die Klasse die Befehle "get", "put", und "dir".

"get"
Get sucht ein Objekt im Repository. Der Befehl erwartet als Parameter einen String, der als hash key verwendet wird.
"put"
Put legt ein Objekt im Repository ab. Der Befehl erwartet als Parameter das abzulegende Objekt.
"dir"
Der Befehl gibt eine Liste der hash keys (also eine Liste von Strings) zurueck.

Der Server benutzt ObjectInputStream bzw. ObjectOutputStream, um die Objekte zu serialisieren. Streams dieser Klasse können beliebige Objekte, die das Interface Serializable implementieren, lesen und schreiben. In unserem Fall werden die Objekte auf das Netzwerk geschrieben bzw. von diesem empfangen.


Beispiel 3: ThreadedClient

Das Beispiel realisiert einen Client, der Integer-Objekte auf dem ThreadedServer ablegen, und holen kann. Es wird eine Verbindung zum Server erzeugt und das Kommando incl. eventuell notwendiger Parameter an den Server geschickt. Im Anschluß wird die Antwort des Servers empfangen und ausgegeben.


Christoph Kuhmünch <cjk@informatik.uni-mannheim.de>
Last modified: Thu May 17 09:02:20 CEST 2001