1   Networking

Internetadressierung ·Sockets und Ports ·Client/Server-Programmierung ·Multicasting ·h"ohere Netzdienste
Das relevante API Paket ist java.net; f"ur remote method invocation java.rmi.*. Material und Beispiele zum Thema findet sich in Kapitel 9 von [flanagan:javanutshellexamples] sowie in Kapitel 15 von [eckel:javathinking]. Auch der entsprechende Abschnitt aus dem Tutorial [campione.walrath:javatutorial] ist als Einstieg brauchbar. Dar"uberhinaus gibt es noch [harold:javanetworkprogramming] nur "uber Netzwerkprogrammierung, aber ich kenne es selbst nicht. Ein wenig "uber die verschiedenen Internetprotokolle habe ich aus [tanenbaum:networks].

IP-Adressen & Ports [Adresse] Mittels statischer Methoden der Klasse InetAddress kann man die TCP/IP-DNS-Adre"sdienste nutzen. Instanzen von InetAddress sind IP-Adressen (allerdings hat die Klasse keinen Konstruktor, verwendet f"ur Sockets, ...).
Code/Networking/Adressen/NSLookup.java Bei nicht-existenter Adresse: java.net.UnknownHostException

Sockets Client/Servers

=5pc Server <=>@/^5ex/[rr]^2) TCP/UDP connection Klient [ll]^1) conn. request

[Server] Ein einfacher statischer Server, der einen Socket aufmacht und zeilenweise Zeichen liest. InputStream ist ein Bytestrom, mittels der Klassen InputStreamReader und BufferedReader wird er in einen gepufferten Zeichenstrom umgewandelt. Analog f"ur die Writer. Der Port, auf dem gelauscht wird, ist öffenlich, damit ihn die Klienten verwenden k"onnen.
Code/Networking/SimpleClientServer/Server.java

[Client] Hier der zu dem Server aus Beispiel 1 auf Folie ?? passende Klient. Den lokalen Host könnte man auch mittels getLocalHost bekommen, wie im Beispiel 1. Der Klient ist im wesentlichen symmetrisch zum Server.
Code/Networking/SimpleClientServer/Client.java

Mehrere Klienten [Server] Hier der entsprechende Code.
Code/Networking/MultipleServer/MultiServer.java

[Server] Hier ein einzelner Serverproze"s. Er bekommt den Socket den er bedienen soll, als Parameter. Ansonsten analog zum Server aus Beispiel 1. Die "Anderungen zum statischen Klienten: die Initialisierung (Vereinbarung der Sockets, Starten des Threads) ist in den Konstruktor gewandert, die Implementierung des dynamischen Verhalten als Rumpf der run-Methode.
Code/Networking/MultipleServer/ServeOne.java

[Klienten] Der Vollst"andigkeit halber noch das selbe f"ur Klientenseite. Hier der Proze"s, der alle Klienten erzeugt:
Code/Networking/MultipleServer/ManyClients.java

[Ein Klient] Schlie"slich ein einzelner Klient, der Code ist nicht wesentlich anders als zuvor: Jeder Klient ist ein Thread. start() startet den Thread, d.h. ruft run() als den Rumpf des Threads auf. Die "Anderungen zum statischen Klienten sind analog zu den "Anderungen beim Server.
Code/Networking/MultipleServer/OneClient.java e

Datagrammdienste

Multicasting

H"ohere Dienste: URL URL: Zusammenfassung

Protokoll Verwendung Beispiel
http Hypertext (HTML) http://www.informatik.uni-kiel.de/ ms
ftp File transfer ftp://ftp.informatik.uni-kiel.de/pub/kiel/
file lokale Datei /home/ms/.plan
news Brett/Artikel
news:cau.ifi.fragen
news:AA4534345@news.informatik.uni-kiel.de
gopher Gopher gopher://gopher.informatik.tu-muenchen.de/
mailto Email mailto:ms@informatik.uni-kiel.de
telnet Einloggen telnet://snoopy.informatik.uni-kiel.de:80

Table 1: Verschiedene URL's


Url-Verbindungen

2   Verteilte Objekte (RMI)



Eine Einf"uhrung findet sich im Nutshellbuch [flanagan*:javaenterprisenutshell] "uber Javas sogenannte Enterprise-Klassen (Kapitel 3, 8 und 13). Einiges ist anscheinend auch in [harold:javanetworkprogramming] enthalten. Schlie"slich noch [lea:concurrent].

Remote Method Invocation: Einleitung

  • bisher: richtig verteilte Berechnungen Anwendungen | bis auf das low-Level Client/Server-Modell | haben wir noch nicht kennengelernt, nur
  • echte Verteilung:
    Methodenaufruf an Objekten auf anderen Maschinen
  • Pakete (³ Java 1.1)
    java.rmi Remote interface und Exception
    java.rmi.server u.a. remote Objects
    java.rmi.dgc Distributed GC
    java.rmi.registry Verwaltung von RO's
  • geh"ort zu den Enterprise-Klassen