Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Netzwerkprogrammierung

Ähnliche Präsentationen


Präsentation zum Thema: "Netzwerkprogrammierung"—  Präsentation transkript:

1 Netzwerkprogrammierung
Java für Fortgeschrittene Kurseinheit 06 Netzwerkprogrammierung Thomas Klutsch Florian Köttner Dienstag, 26. Juli 2011 WS 2011/2012 1 1

2 Aufbau der Einheit: Einleitung: Socket für Server/Client-Applikation
Terminolgie Zugriff auf eine URL Socket für Server/Client-Applikation Server Client RMI für Server/Client-Applikation Netzwerkprogrammierung

3 Terminologie: Host: am Netz angeschlossener Rechner.
1. Einleitung Terminologie: Host: am Netz angeschlossener Rechner. IP-Adresse: Identifikation eines Hosts, IPv4 als 32-Bit-Zahl, IPv6 128-Bit-Zahl. DNS (Domain Name Service): Zuordnung eines Namens zur IP-Adresse. Kommunikation zweier Host über Datenpakete welche über den IP (Internet Protocol) Standard vermittelt werden (Datenpaket = body + header). Weiterleitung von Paketen über Router (Routing Protokolle). IP als verbindungsloses Protokoll, Daten können verloren/verdoppelt werden TCP/IP, also Transmission Control Protocol als Erweiterung zur korrekten Reihenfolgeeinhaltung und Verlustmanagement bei IP-Paketen. Weitere Protokolle: User Datagram Protocol (UDP) Java: Programmierung auf Sockets, einer API auf TCP-Ebene Netzwerkprogrammierung

4 Zugriff auf eine URL (Uniform Resource Locator):
1. Einleitung Zugriff auf eine URL (Uniform Resource Locator): Klasse URL aus java.net Netzwerkprogrammierung

5 1. Einleitung Aufgabe 1: Geben sie den Inhalt der Textdatei unter auf der Konsole aus! Erstellen Sie eine neue Klasse mit dem Namen: ReadFromUrl Erstellen Sie ein URL-Objekt mit obiger Pfadangabe! Benutzen Sie geeignete Methoden aus dem Kapitel Input/Output um die Textdatei auszulesen und auf der Konsole anzeigen zu lassen. Netzwerkprogrammierung

6 Klasse: URL-Connection
1. Einleitung Klasse: URL-Connection Abstrakte Klasse zum Empfang der Inhalte der URL-Objekte enthält verschiedene Methoden um z.B. den Header einer HTTP-Seite auszulesen Klasse: Authenticator Geeignet bei Authentifizierungsbitte/Passwortabfrage Netzwerkprogrammierung

7 Klasse InetAdress 1. Einleitung
Gibt uns Methoden zum Auslesen der IP-Adresse oder des Hostnamens einer URL „wir können also die Rolle des DNS übernehmen“ ebenso kann die lokale IP-Adresse des eigenen Rechners mit getLocalHost() ausgelesen werden Netzwerkprogrammierung

8 2. Sockets für eine Server/Client-Applikation
Bisher: high-level Programmierung ohne Einblick in TCP/IP Protokolle Nun: eigene Server/Client-Applikationen mit sicherer/verlustfreier Verbindung Java-Sockets Ein Socket ist eine Datenstruktur zur Administration von (Netzwerk-) Verbindungen. Ein Socket ist ein Endpunkt einer bidirektionalen Kommunikationsbeziehung zwischen zwei im Netz laufenden Programmen (Prozessen). Endpunkt 1: Server Javaklasse: ServerSocket (TCP) Dieser bietet einen Dienst an und wartet auf eingehende Verbindungen Endpunkt 2: Client Javaklasse: Socket (TCP) Dieser verbindet sich zu einem Server und benutzt den angebotenen Dienst des Servers Netzwerkprogrammierung

9 2. Sockets Die wichtigsten Klassen aus java.net zur Realisierung von Socketverbindungen (TCP): .Socket .ServerSocket .DataInputStream .PrintStream .DataOutputStream .URL .URLConnection Netzwerkprogrammierung

10 Erstellung eines Sockets als Serverendpunkt einer Verbindung:
1. Schritt: Ein ServerSocket Objekt erzeugen: ServerSocket listenSocket = new ServerSocket(portNumber); 2. Schritt: Ein Socket Objekt aus dem ServerSocket erzeugen: while (someCondition) { Socket server = listenSocket.accept(); doSomethingWith(server); } 3. Schritt: Ein “input stream” erzeugen: BufferedReader in = new BufferedReader(new InputStreamReader( server.getInputStream())); 4. Schritt: Ein “output stream” erzeugen: PrintStream out = new PrintStream(server.getOutputStream()); 5. Schritt: Nutzdaten senden und empfangen. in.readLine(); out.println(); 6. Schritt: Ströme schließen: out.close(); in.close(); 7. Schritt: Socket schließen: server.close(); Netzwerkprogrammierung

11 Erstellung eines Sockets als Clientendpunkt einer Verbindung
1. Schritt: Ein Socket Objekt erzeugen (Öffnen eines Sockets): Socket client = new Socket(“hostname”,portNumber); 2. Schritt: Ein “output stream” erzeugen, um Daten zu senden: PrintStream out = new PrintStream(client.getOutputStream()); bzw. DataOutputStream out2 = new DataOutputStream(client.getOutputStream()); 3. Schritt: Ein “input stream” erzeugen, um die Antwort des Servers zu empfangen: DataInputStream in = new DataInputStream(client.getInputStream()); bzw. BufferedReader in = new BufferedReader( new InputStreamReader(Client.getInputStream())); 4. Schritt: Nutzdaten senden und empfangen. in.readLine(); out.println(); aber out2.writeBytes(); 5. Schritt: Ströme schließen: out.close(); in.close(); 6. Schritt: Socket schliessen: client.close(); Netzwerkprogrammierung

12 2. Sockets Aufgabe 2: Schreiben sie eine Server/Client-Applikation auf Basis von Sockets und dem TCP- Verbindungsprotokoll, welche folgendes ermöglicht: Eine Klasse TCP-Server wartet auf die Verbindung eines Clients. Eine Klasse TCP-Client verbindet sich mit dem Server und liest eine Benutzereingabe auf der Konsole ein. Dies Konsoleneingabe soll über eine Socketverbindung an den Server geschickt werden, welcher die Eingabe in „upper-case“-Darstellung dem User zurückgibt. Nach erfolgreicher Rückgabe wird der Client geschlossen, der Server wartet jedoch weiterhin auf Verbindungen! Netzwerkprogrammierung

13 3. RMI für eine Server/Client-Applikation
Ziel: entfernte Objekte und Methoden aufrufbar! Sicht auf entfernte Dienste wie auf Methoden innerhalb einer Laufzeitumgebung ein Methodenaufruf auf einen Server soll so aussehen, als ob er eine lokale Methode wäre. RMI (Remote Method Invocation) macht es möglich, auf hohem Abstraktionsniveau zu arbeiten und entfernte Methodenaufrufe zu realisieren. Automatisch generierte Stellvertreter nehmen die Daten entgegen und übertragen sie zum Server. Nach der Antwort präsentiert der Stellvertreter das Ergebnis. Netzwerkprogrammierung

14 3. RMI 3 Teile von RMI: Server stellt das entfernte Objekt mit einer Methodenimplementierung bereit, er leitet also eingehende Anfragen vom Netzwerk an diese Methode weiter. Ein Namensdienst (Registry) verbindet Objekte mit ihren Methoden unter einem eindeutigen Namen. Der Server meldet Objekte mit ihren Methoden beim Namensdienst an. Der Client möchte auf eine Methode des entfernten Objektes zugreifen und frägt demnach erst beim Namensdienst an, um Zugriff zu bekommen. Netzwerkprogrammierung

15 Der RMI Server Eine entfernte Schnittstelle deklariert Methoden.
Eine Klasse implementiert die Schnittstelle und füllt die Methode mit Leben => Remote-Objekt-Implementierung. Netzwerkprogrammierung

16 3. RMI Der Server meldet das entfernte Objekt unter einem öffentlichen Namen bei der Registry an und muss es vor der Bereitstellung für die Clients exportieren, um für eine eingehende Verbindung bereit zu sein. Netzwerkprogrammierung

17 3. RMI Der RMI Client Um entfernte Methoden zu nutzen, muss ein entferntes Objekt gesucht und angesprochen werden. Dazu fragen wir den Namensdienst. Der Name für das Objekt setzt sich aus der URL und dem Namen des Dienstes zusammen. Netzwerkprogrammierung

18 3. RMI Aufgabe 3: Schreiben sie eine Server/Client-Chatapplikation auf Basis von RMI, welche folgendes ermöglicht: Ein Server bietet einen Dienst an, welcher beliebig viele Nutzer zwischenspeichert und jedem Chatteilnehmer eine andere Schriftfarbe gibt. Der Server verwaltet alle Nachrichten und schickt sie an alle teilnehmenden Clients. Eine kleine GUI beschreibt Ereignisse wie connect und disconnect von Benutzern. Clients müssen beim Start der Applikation ihren Namen und eine IP-Adresse des Servers angeben und sind bei erfolgreichem Finden der Adresse mit dem Server verbunden. Eine kleine GUI beim Client ermöglicht die Darstellung der Nachrichten, sowie die Namen der verbundenen Clients und ein Eingabefeld. Netzwerkprogrammierung

19 Beispiel-Gui für die Applikation:
3. RMI Beispiel-Gui für die Applikation: Netzwerkprogrammierung


Herunterladen ppt "Netzwerkprogrammierung"

Ähnliche Präsentationen


Google-Anzeigen