Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW...

229
Netzwerk- programmierung Sommersemester 2007

Transcript of Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW...

Page 1: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Netzwerk-programmierung

Sommersemester 2007

Page 2: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Inhalt der LV Grundlegende Begriffe Konzepte des WWW

HTML (DOM, JS, CSS, XHTML) HTTP Protokoll

Socketprogrammierung TCP Client/Server UDP / UDP Multicast

Java Socketprogrammierung Dynamisch Klassen über Netzwerke laden

Remote Technologien Java RMI .NET Remoting RMI und .NET Remoting Callbacks WebServices

Anwendungen im Web-Browser Java Applets .NET im Browser

Java Servlets und Java Server Pages (JSP)

Netzwerkprogrammierung 2

Page 3: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Computernetzwerke Ansammlung von Computern und anderen

Geräten, welche Informationen austauschen und bereitgestellte Dienste nutzen

Netzwerkprogrammierung 3

Page 4: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Client / Server Modell Server stellt Dienste zur Verfügung Client(s) greifen auf diese Dienste zu Server und Client können sich auch beide auf dem

selben Rechner befinden Client initiiert die Verbindung zum Server (in der

Regel) Clients kennen die Adresse des Servers Server kennt erst seine Clients, wenn sich diese bei ihm

anmelden

Netzwerkprogrammierung 4

Page 5: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Mail Server

Datenbank Server

Drucker Server

Clients

Netzwerkprogrammierung 5

Client – Server Modell

Page 6: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

NetzwerkkommunikationKommunikation beschrieben durch das

OSI Schichtenmodell Netzwerkorientiert Schicht 1-4 im OSI Anwendungsorientiert Schicht 5-7 im OSI

Netzwerkprogrammierung 6

Page 7: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

OSI Referenzmodel - Zusammenbau des Pakets

Netzwerkprogrammierung 7

Page 8: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Einordnung der Protokolle Paket wieder einlesen Auspacken wie

Kisten in Kisten

Netzwerkprogrammierung 8

Page 9: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

IP Paket – Header

Dem Header folgt Datenbereich(z.B.: TCP Paket)

Netzwerkprogrammierung 9

z.B.: 0x06 für TCP oder 0x11 für UDP

Page 10: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

TCP/IPSeit Mitte der 90er: eingesetzt für WWW Im OSI Transport Layer (Schicht 4)Full Duplex (Daten senden und Empfangen

gleichzeitig möglich)PaketorientiertVerbindungsorientiert – Dauerverbindung /

Standleitung

Netzwerkprogrammierung 10

Page 11: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende BegriffeRechner 1 Rechner 2

SEQ: 1 ACK: 5 [DATA]

SEQ: 2 ACK: 6 [DATA]

SEQ: 6 ACK: 1 [DATA]

SEQ: 7 ACK: 2 [DATA]

Netzwerkprogrammierung 11

TCP Datenaustausch und Bestätigung

Page 12: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende BegriffeRechner 1 Rechner 2

SEQ: 1 ACK: 5 [DATA]

SEQ: 1 ACK: 5 [DATA]

SEQ: 6 ACK: 1 [DATA]

SEQ: 6 ACK: 1 [DATA]

X

Tim

eO

ut .

Neuer Versuch Packet 1 zu übertragen

Netzwerkprogrammierung 12

TCP Timeout und erneutes Senden

Page 13: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

UDPunsicher (keine Empfangsbestätigung)Datagramme sind untereinander unabhängigKeine Prüfung ob Empfänger überhaupt

online istUDP ähnlich einer Postwurfsendung (Spam)

und TCP ähnlich eines Telefonanrufs

Netzwerkprogrammierung 13

Page 14: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Sender

Empfänger

Netzwerkprogrammierung 14

UDP Pakete werden verschickt aber keine Bestätigung zurückgesendet

Page 15: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Netzwerk

Sendet UDP Packet

Netzwerkprogrammierung 15

Ein UDP Broadcast Datagramm wird ins Netz geschickt

Alle Rechner im Netz empfangen das Paket

Page 16: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

In C oder ASM Verwendung und Konstruktion von TCP/UDP Paketen mitunter

per Hand Empfang und Bufferung dem Entwickler selbst überlassen

In höheren Programmiersprache (Java, .NET,..)

Stream Gedanke – Verarbeitung der Netzwerkverbindung wie eine lokale Datei

Bufferung kann durch das Framework automatisch erfolgen Damit leichtere Entwicklung, aber weniger spezial Lösungen

möglich (neue Protokolle oder ähnliches)

Netzwerkprogrammierung 16

Page 17: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

URLs Uniform Resource Locator (URL, engl. „einheitlicher

Quellenanzeiger“) Symbolische Adresse www.hs-zigr.de und

physikalische Adresse 141.46.8.60 Unterkategorie von URI (Uniform Resource Identifier) URI bezieht alle Schemas ein (file:// mailto: file://)

URL eigentlich nur http:// und ftp://

Netzwerkprogrammierung 17

Page 18: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Proxy Server Befindet sich zwischen lokalem Netz und Internet Proxy Server holt angeforderte Daten aus dem

Internet und gibt sie zum anfragendem Rechner stellvertretend weiter

In Application-Schicht angesiedelt Caching möglich Nachteile: meist nur wenige Protokolle erlaubt,

Programme wie ICQ funktionieren über einen Proxy Server oftmals nicht

Vorteil: kann beschleunigen, kann mehr Sicherheit bieten, da Clients nicht selbst ins Netz gehen

Netzwerkprogrammierung 18

Page 19: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Intranet

Proxy-ServerZiel-Server(Web-Server)

Internet / Netzwerk

Anwender-Rechner

Netzwerkprogrammierung 19

Proxy-Server Modell

Page 20: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Ports und Sockets URLs zur Adressierung einzelner Knoten im Netz (Rechner) Serverprozess selbst muss adressiert werden

(welche Dienst soll angesprochen werden) Port – jeder Dienst bekommt eine Nummer Jede Portnummer kann nur einmal vergeben werden auf einem

Rechner Erstellt man einen neuen Dienstprozess bekommt dieser vom

System einfach einen freien Port zugewiesen (bei Serverprozessen meist unerwünscht)

Jeder Port entspricht einem Socket (Steckdose)

Netzwerkprogrammierung 20

Page 21: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

S

Ports(einige offen einige

geschlossen)

S

Socketverbindung

Rechner 1 Rechner 2

Ports(einige offen einige

geschlossen)

Netzwerkprogrammierung 21

# 1 - 65536

Page 22: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Grundlegende Begriffe

Standardisierte Ports (well known - TCP): 80: http (Webserver) 21: ftp (Fileserver) 22: sftp (sicherer Fileserver) 25: smtp (Email-Versanddienst) …

Operationen auf Sockets: Öffnen Lesen / Schreiben Schließen Hören (auf eingehende Verbindung warten) Akzeptieren (eine eingehende Verbindung annehmen) Binden (einem Serverprozess einen ganz bestimmten Port zuweisen)

Netzwerkprogrammierung 22

Page 23: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

HTML Entstehung:

In der Schweiz (Genf) 1989 USA (MIT)

Eigenschaften: Geräteunabhängig Sprache zur Darstellung von Inhalten wie Texten,

Bildern und Hyperlinks in Dokumenten Kein Seitenkonzept wie etwa bei PostScript

Netzwerkprogrammierung 23

Page 24: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

Aufbau eines HTML Dokuments:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html> <head> <title>Titel der Webseite</title> </head> <body> Inhalt der Webseite </body> </html>

Netzwerkprogrammierung 24

Page 25: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

Tags und Attribute<TAG>…</TAG><TAG attribut1="abc">…</TAG>Bis auf wenige Ausnahmen wie XML

Heute immer mehr XHTMLHTML welches XML konform ist

z.B.: <br> muss nun <br/> sein <img src="pic.jpg" />

Netzwerkprogrammierung 25

Page 26: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

CSS (Cascading Style Sheets) legt fest, wie ein besonders ausgezeichneter

Inhalt in einem HTML/XML Dokument dargestellt wird

Kann sowohl als separate Datei angelegt werden, oder in das HTML Dokument eingebettet werden

Netzwerkprogrammierung 26

Page 27: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

CSS (Cascading Style Sheets)

Netzwerkprogrammierung 27

Page 28: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

<input name="e1" style="border:none;border-bottom: 2px dashed black;" />

Gute Beispiele und Referenz: http://de.selfhtml.org/

Netzwerkprogrammierung 28

Page 29: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

JavaScript Clientseitige Programmiersprache in HTML

eingebettet (oder externe Datei)Erlaubt dynamische InhalteErweitert die Möglichkeiten von HTML

grundlegend (JavaScript hier stellvertretend für alle Browser-Scriptsprachen wie VBScript)

Netzwerkprogrammierung 29

Page 30: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

JavaScript und DOM HTML Seite ist zur Laufzeit durch ein DOM Object

(Document Object Model) beschrieben Per JavaScript kann das DOM verändert werden http://de.selfhtml.org/dhtml/beispiele/anzeige/datumuh

r.htm http://de.selfhtml.org/javascript/beispiele/anzeige/tasc

henrechner.htm

Netzwerkprogrammierung 30

Page 31: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

Hinweis:Um heute dynamische Webanwendungen zu

entwickeln, ist JavaScript, DOM, CSS ein Muss!

Wenn Sie etwas Freizeit haben, schauen Sie sich Beispiele in SelfHTML an und entwickeln Sie selbst kleine dynamische HTML Seiten

Netzwerkprogrammierung 31

Page 32: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

HTTP Hypertext Transfer ProtocolAufbau der Verbindung des Webbrowsers

mittels TCP/IPTCP Paketinhalt in Form von HTTPHTTP ist ein Klartext-Protokoll

(man kann es als Mensch lesen)HTTP-Request und HTTP-Response

(Anfrage und Antwort)

Netzwerkprogrammierung 32

Page 33: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Web-Server(www.google.de)

Client

GET / HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, */*Accept-Language: deUA-CPU: x86Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)Host: 127.0.0.1:81Connection: Keep-Alive

12

HTTP/1.1 200 OKCache-Control: privateContent-Type: text/htmlSet-Cookie: PREF=ID=5d5b86a54ea78fff:TM=1172152002:LM=1172152002:S=yRZldpnO3qqV9FoT; expires=Sun, 17-J an-2038 19:14:07 GMT; path=/; domain=.google.comServer: GWS/2.1Transfer-Encoding: chunkedDate: Thu, 22 Feb 2007 13:46:42 GMT

<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><style><!--body,td,a,p,.h{font-family:arial,sans-serif}.h{font-size:20px}.h{color:#3366cc}.q{color:#00c}--></style><script><!--function sf(){document.f.q.focus();} ……………

34

Netzwerkprogrammierung 33

Page 34: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

Größte Bedeutung hat jeweils die 1. Zeile Andere Angaben sind meist nicht zwingend nötig Ergebniscodes

200-299 Erfolg (alles Ok) 300-399 Umleitung (auf andere Seite) 400-499 Fehler Clientseite (z.B.: falsche URL eingegeben) 500-599 Fehler Serverseite (ein Serverscript hat Fehler verursacht)

Content-Typen (MIME-Typen) text/html text/plain image/gif image/jpeg application/octet-stream application/msword multipart/form-data

http ist Zustandslos –Anfragen sind nicht miteinander verbunden

Netzwerkprogrammierung 34

Page 35: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

Web-Server was passiert wenn eine Webseite angefordert wird

Netzwerkprogrammierung 35

Page 36: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Konzepte des WWW

Fragen:Beim öffnen einer typischen Webseite mit

Bilder, StyleSheets, JavaScriptenWie viele http-Requests sendet der Browser zum Server?

Ist paralleles herunterladen beim öffnen einer Webseite möglich/sinnvoll?

Netzwerkprogrammierung 36

Page 37: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Ausblick Übungsaufgabe 1

Entwickeln Sie einen minimalistischen Webserver. Entscheiden Sie dabei selbst ob Ihr Webserver mehrere Anfragen gleichzeitig behandeln kann oder nicht. Konzentrieren Sie sich beim parsen des http-Request Headers auf die erste Zeile und implementieren Sie den Befehl GET. Generieren Sie einen http-Response Header, der von einem Browser verstanden wird und auch der Seiteninhalt (HTML Seite, Bilder) angezeigt wird.

Sie können in 2er Gruppen zusammenarbeiten.

Netzwerkprogrammierung 37

Page 38: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Um die Übungsaufgabe Lösen zu könne, benötigen wir Sockets.

Server Entwickeln:Verwendung von ServerSocket in Java.

Als Client nehmen wir zum Testen „telnet“Wie verwenden TCP als Transportprotokoll

Netzwerkprogrammierung 38

Page 39: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungimport java.io.*;import java.net.*;public class _1_ServerSocket {

public static void main( String[] args ) {ServerSocket server; // unser ServerSockettry{server = new ServerSocket(1111); // maximal 65536Socket client = server.accept(); // blockiert!PrintWriter clientOut = new PrintWriter(new

BufferedOutputStream(client.getOutputStream()));clientOut.println("Hallo Client...\nBye.");clientOut.flush(); // damit Buffer übertragen wird!client.close();}catch (IOException ex){System.out.println(ex);}

}}

Netzwerkprogrammierung 39

Page 40: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Test mit telnet:

Netzwerkprogrammierung 40

Page 41: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Was kann unser Server: genau eine Verbindung entgegennehmen einmalig eine Textnachricht an den Client senden Verbindung mit Client trennen Server wird beendet

Erweitern wir den Server mit: Server arbeitet dauerhaft und kann beliebig viele

Verbindungen verarbeiten Client kann auch Daten zum Server senden

Netzwerkprogrammierung 41

Page 42: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungimport java.io.*;import java.net.*;public class _2_ServerSocket {

public static void main(String[] args){ServerSocket server;try { server = new ServerSocket(1111); // maximal 65536 while (true){ // wiederhole immer wieder!

Socket client = server.accept();PrintWriter clientOut = new PrintWriter(new BufferedOutputStream(client.getOutputStream()));BufferedReader clientIn = new BufferedReader(new InputStreamReader(client.getInputStream()));clientOut.println("Hallo Client...\nBye.");clientOut.flush();String str = clientIn.readLine(); // empfangenSystem.out.println(str); // auf Serverseite ausgebenclient.close();

}}catch (IOException ex){ System.out.println(ex); }

}}

Netzwerkprogrammierung 42

Page 43: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Was kann unser Server: Endlos viele Verbindung entgegennehmen einmalig eine Textnachricht für den Client ausgeben einmalig eine Textnachricht empfangen Verbindung mit Client trennen

Was kann unser Server nicht: mehrer Clients gleichzeitig – parallel – bedienen Clients müssen sich „anstellen“ in einer

Warteschlange

Netzwerkprogrammierung 43

Page 44: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Multithreaded Server Wir verwenden für jeden Client einen eigenen Thread.

Damit können diese quasi-parallel abgearbeitet werden.

Hinweis: In der Praxis können sich mehrere 1000 Clients gleichzeitig

verbinden wollen sehr viele Threads verlangsamen das System (zu viel Verwaltung durch BS nötig). Deshalb werden auch Thread-Pools eingesetzt (z.B.: 100 feste Arbeitsthreads).

Netzwerkprogrammierung 44

Page 45: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungimport java.io.*;import java.net.*;public class _3_MultiThreaded {

public class ClientThread extends Thread { // ein Threadpublic Socket clientSocket = null;public ClientThread(Socket s) { clientSocket = s; }public void run() { // wird aufgerufen wenn Thread gestartet wird!

try { PrintWriter clientOut = new PrintWriter(new BufferedOutputStream(clientSocket.getOutputStream())); BufferedReader clientIn = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); clientOut.println("Hallo Client...\nBye."); clientOut.flush(); String str = clientIn.readLine(); System.out.println(str); clientSocket.close();}catch (IOException ex) { System.out.println(ex);}

}}

Netzwerkprogrammierung 45

Page 46: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungpublic void runServer() {

ServerSocket server;try {

server = new ServerSocket(1111); // maximal 65536while (true) {Socket client = server.accept();ClientThread ct = new ClientThread(client);ct.start();}

}catch (IOException ex) { System.out.println(ex);}

}public static void main(String[] args) {

System.out.println("*******************************************");System.out.println("*>>>-----------------------------------<<<*");System.out.println("*>>> Multithreaded Server <<<*");System.out.println("*>>>-----------------------------------<<<*");

System.out.println("*******************************************");_3_MultiThreaded prog = new _3_MultiThreaded();prog.runServer();

}}

Netzwerkprogrammierung 46

Page 47: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung Nun können wir mit mehreren Telnet Clients gleichzeitig testen:

Netzwerkprogrammierung 47

Page 48: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Was kann unser Server: beliebig viele Verbindungen parallel entgegennehmen einmalig eine Textnachricht für den Client ausgeben einmalig eine Textnachricht empfangen Verbindung mit Client trennen

Fragen: Kann man unseren Server über einen Webbrowser ansprechen

und wenn wie? Wenn Ja, was würde im Webbrowser und im Server angezeigt

werden?

Netzwerkprogrammierung 48

Page 49: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Netzwerkprogrammierung 49

Page 50: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 1

Entwickeln Sie einen minimalistischen Webserver. Entscheiden Sie dabei selbst ob Ihr Webserver mehrere Anfragen gleichzeitig behandeln kann oder nicht. Konzentrieren Sie sich beim parsen des http-Request Headers auf die erste Zeile und implementieren Sie den Befehl GET. Generieren Sie einen http-Response Header, der von einem Browser verstanden wird und auch der Seiteninhalt (HTML Seite, Bilder) angezeigt wird.

Entwickeln Sie ihr Programm mit Java und verwenden Sie die Klassen Socket und ServerSocket. Nach eigenem Kenntnisstand können Sie eine Konsolenanwendung oder Fensteranwendung erstellen.

Netzwerkprogrammierung 50

Page 51: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 1

Hinweise: http-Response:clientOut.println("HTTP/1.1 200 OK");clientOut.println("Content-Type: text/html");clientOut.println(""); // Header zuende - eine Leerzeile !!!clientOut.println("<html><body><center>TEST</center></body></html>");clientOut.flush();

Verwenden Sie Datei-Streams um Dateien (HTML, Bilder) zu öffnen und deren Inhalt in clientOut zu schreiben.

Netzwerkprogrammierung 51

Page 52: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Sprachvergleich mit C++#include <windows.h>#pragma comment( lib, "wsock32.lib")

bool IS_SERVER_RUNNING = true;bool PROGRAM_IS_RUNNING = true;unsigned short PORT = 1111; // Server Port

struct AClient { SOCKET Socket; // Socket auf welchem wir arbeiten HANDLE ThreadHandle; // der mit diesem Client verbundene Thread};

DWORD WINAPI ClientThreadFunc( LPVOID ClientData ) { AClient* Data = (AClient*)ClientData; // Wir senden ein Hallo Welt an den Clienten // char* Text = "Hallo Welt!\n"; send(Data->Socket,Text,strlen(Text),0); // Beenden der Verbindung // closesocket(Data->Socket); delete Data; return 0;}

Netzwerkprogrammierung 52

Page 53: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Sprachvergleich mit C++void CreateClient(SOCKET Sock) {

AClient* Data = new AClient[1]; unsigned long ID = 0; HANDLE Handle = 0;Handle = CreateThread(NULL,0,ClientThreadFunc,(void*)Data,CREATE_SUSPENDED,&ID);Data->ThreadHandle = Handle;Data->Socket = Sock;ResumeThread(Handle);

}DWORD WINAPI ServerThreadFunc( LPVOID param ) {

sockaddr Addr;SOCKET ServerSocket = 0;SOCKET ActClient = 0;ServerSocket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); // Socket erstellen //memset(&Addr,0,sizeof(sockaddr)); // Adresse an die wir den Socket binden wollen festlegen //Addr.sa_family = AF_INET;unsigned short temp = htons(PORT);memcpy(&Addr.sa_data[0],&temp,sizeof(unsigned short));bind(ServerSocket,&Addr,sizeof(Addr)); // Binden des Sockets an die Adreese (Port) //listen(ServerSocket,SOMAXCONN); // Socket auf listen schalten //while(IS_SERVER_RUNNING){// Auf Clienten warten //

ActClient = accept(ServerSocket,NULL,NULL);if(ActClient == INVALID_SOCKET) continue;CreateClient(ActClient);

}PROGRAM_IS_RUNNING = false; // Signal zum Beenden des gesamten Programms //return 0;

}

Netzwerkprogrammierung 53

Page 54: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Sprachvergleich mit C++

int main () {// Windows mitteilen das wir Sockets benutzen wollen //WSADATA WsaData;WSAStartup(0x101,&WsaData);unsigned long ThreadID = 0;HANDLE ThreadHandle = 0;ThreadHandle = CreateThread(NULL,0,ServerThreadFunc,NULL,CREATE_SUSPENDED,&ThreadID);ResumeThread(ThreadHandle);// Programm wartet bis Thread fertig ist //// Hier könnte alles mögliche Andere verarbeitet werden //while (PROGRAM_IS_RUNNING) Sleep(1);// wieder aufräumen //WSACleanup();return 0;

}

Ergebnis: Befehle sind sehr ähnlich, nur etwas mehr Schreibaufwand und nicht Objektorientiert

Netzwerkprogrammierung 54

Page 55: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Client Entwickelnbislang haben wir fertige Clients verwendet

(telnet, Browser)Eigener Client verwendet einen Socket um

sich zum Server zu verbindenLesen und Schreiben auf Socket genau wie

bereits im Server

Netzwerkprogrammierung 55

Page 56: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungpublic class _4_ClientSocket {

public class ClientThread extends Thread {public void run() { try {Socket clientSocket = new Socket("127.0.0.1", 1111);PrintWriter clientOut = new PrintWriter(new

BufferedOutputStream(clientSocket.getOutputStream()));BufferedReader clientIn = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));String str = clientIn.readLine();System.out.println(str);clientOut.println("Hallo zurück");clientOut.flush();clientSocket.close(); } catch (IOException ex) { System.out.println(ex); }}

}public _4_ClientSocket() {

ClientThread ct = new ClientThread(); ct.start();}public static void main(String[] args){

_4_ClientSocket prog = new _4_ClientSocket();}

}

Netzwerkprogrammierung 56

Page 57: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Fragen:Bei Consolenprogrammen ist für einen Client

kein Thread nötig. Bei einer GUI Anwendung in der Regel jedoch schon – warum?

Netzwerkprogrammierung 57

Page 58: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

WGet Client Ziel: Ein Programm entwickeln, welches

HTML Daten von einem beliebigen Webserver holt.

Aufruf: java wget www.google.de /index.html

Netzwerkprogrammierung 58

Page 59: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

import java.io.*;import java.net.*;public class _5_WGet {

public _5_WGet(String host,String file){

ClientThread ct = new ClientThread(host,file);ct.start();

}public static void main(String[] args){

if (args.length < 2){ System.out.println("Aufruf: java _5_wget www.host.de /file");}else{ _5_WGet prog = new _5_WGet(args[0], args[1]);}

}

Netzwerkprogrammierung 59

Page 60: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

public class ClientThread extends Thread {public Socket clientSocket = null;public String targethost;public String targetfile;public ClientThread(String host, String file){

targethost = host;targetfile = file;

}public void run() {

try { clientSocket = new Socket(targethost, 80);

PrintWriter clientOut = new PrintWriter(new

BufferedOutputStream(clientSocket.getOutputStream())); BufferedReader clientIn = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); clientOut.println("GET "+targetfile+" HTTP/1.1"); clientOut.println("Host:" + targethost+":80"); clientOut.println(""); clientOut.flush();

Netzwerkprogrammierung 60

Page 61: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung System.out.println("HTTP-Response-Header:"); String str = clientIn.readLine(); while (!str.equals("")) { System.out.println(str); str = clientIn.readLine(); } System.out.println("");

System.out.println(„HTTP-Daten:"); str = clientIn.readLine(); while (!str.equals("")) { System.out.println(str); str = clientIn.readLine(); } clientSocket.close();}catch (IOException ex){ System.out.println(ex);}

}}

}

Netzwerkprogrammierung 61

Page 62: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Netzwerkprogrammierung 62

Page 63: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

UDPverbindungslos„Broadcast“ möglich – senden an alle

Rechner in einem Netzwerk Jeder Client entscheidet ob ihn das Paket

interessiert oder nicht Eine mögliche Lösung für „Chat-Anwendungen“

Aber zunächst einfache Client-Server-Kommunikation

Netzwerkprogrammierung 63

Page 64: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungpublic class _6_UDPServer {

public class ClientThread extends Thread {public DatagramSocket clientSocket = null;public void run() {

try {clientSocket = new DatagramSocket(1234); // 1234=Port while (true) {// Ein Paket empfangen:byte[] buf = new byte[256];DatagramPacket packet = new DatagramPacket(buf, buf.length);clientSocket.receive(packet);String received = new String(packet.getData());System.out.println("Empfangen: " + received);// sender merkenInetAddress sender = packet.getAddress();

// Ein Paket senden:packet.setAddress(sender);received = "Dank zurück :)";buf = received.getBytes();packet.setData(buf);clientSocket.send(packet);}}

Netzwerkprogrammierung 64

Page 65: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Was kann unser Server:UDP Datagramme annehmen auf Port 1234Dem Sender eine Nachricht zurücksendenAnfragen werden nicht parallel verarbeitet

Verwendet:DatagramSocket und DatagramPacket

Netzwerkprogrammierung 65

Page 66: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Fragen:Warum bekommt nicht jeder eingehende

„Client“ einen eigenen Thread wie bei unserem Multithread-TCP Server?

Wann würde es Sinn machen Threads zu verwenden?

Netzwerkprogrammierung 66

Page 67: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierungpublic class _7_UDPClient {

public class ClientThread extends Thread {public DatagramSocket clientSocket = null;public String target;public ClientThread(String Target) { target = Target; }public void run() { try {

clientSocket = new DatagramSocket(); // ohne Portbyte[] buf = new byte[256];String sendtext = "Hallo Server :)";buf = sendtext.getBytes();DatagramPacket packet = new DatagramPacket(buf, buf.length);InetAddress to = InetAddress.getByName(target);packet.setPort(1234);packet.setAddress(to);clientSocket.send(packet);

clientSocket.receive(packet);String received = new String(packet.getData());System.out.println("Empfangen: " + received);

} catch (IOException ex) { System.out.println(ex); }}

}public _7_UDPClient(String Target) {

ClientThread ct = new ClientThread(Target); ct.start();}public static void main(String[] args) {

if (args.length < 1) { System.out.println("need Target IP as parameter");}else { _7_UDPClient udp = new _7_UDPClient(args[0]); }

}}

Netzwerkprogrammierung 67

Page 68: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Netzwerkprogrammierung 68

Page 69: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung Verwendung von MulticastSocket

An alle Rechner in einem bestimmten Netzwerk senden

Einteilung in „multicast groups“ welche in Form einer IP Adresse angegeben werden: 224.0.0.0 bis 239.255.255.255, dabei ist 224.0.0.0 reserviert und sollte nicht verwendet werden.

Ein Client kann sich einer Gruppe anschließen und verlassen

Vergleich: IP Adresse ~ Frequenz am Radio

Netzwerkprogrammierung 69

Page 70: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

String msg = "Hello";

InetAddress group = InetAddress.getByName("228.5.6.7");

MulticastSocket s = new MulticastSocket(1234);

s.joinGroup(group);

DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 1234);

s.send(hi);

String msg = "Hello";

InetAddress group = InetAddress.getByName("228.5.6.7");

DatagramSocket s = new DatagramSocket ();

DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 1234);

s.send(hi);

Netzwerkprogrammierung 70

Multicast Packet in eine Gruppe senden (2 Möglichkeiten):

Page 71: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Multicast Packet aus einer Gruppe empfangen:

InetAddress group = InetAddress.getByName("228.5.6.7");MulticastSocket s = new MulticastSocket(1234);s.joinGroup(group);// Antwort empfangenbyte[] buf = new byte[1000];DatagramPacket recv = new DatagramPacket(buf, buf.length); // nur Buffers.receive(recv);String received = new String(recv.getData(),0,recv.getLength());System.out.println("Empfangen: " + received);s.leaveGroup(group);s.close();

Netzwerkprogrammierung 71

Page 72: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Beide Clients empfangen zeitgleich das Paket

Netzwerkprogrammierung 72

Page 73: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Fragen:Ein Server möchte all seinen Clients eine

Nachricht senden. Besitzt ein UDP-Multicast Vorteile gegenüber einer TCP Übertragung oder einem adressierten UDP Paket?

Nennen Sie Beispiel für UDP-Anwendungen, wo eignet sich UDP besonders gut?

Netzwerkprogrammierung 73

Page 74: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Socket Programmierung

Zusammenfassung: Konzept von Sockets / Ports kennen gelernt ServerSocket und Socket für Server und Client

Anwendungen verwendet Multithread-Server entwickelt HTTP Protokoll praktisch angewendet TCP und UDP verwendet Die verwendete Programmiersprache spielt dabei

eine untergeordnete Rolle

Netzwerkprogrammierung 74

Page 75: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 2

Entwickeln Sie mit UDP MulticastSocket eine Chat-Anwendung

Verwenden Sie 2 Threads (einen für Senden und einen für Empfangen)

Gestalten Sie eine einfache GUI für die Anwendung

Es ist kein Chat-Server nötig

Netzwerkprogrammierung 75

Page 76: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Objekte über das Netzwerk versendenJava kann Objekte über einen

ObjectOutputStream schreiben (anwendbar auf Dateien und Socketverbindungen)

Objekte müssen java.io.Serializable implementieren

Vorteil: Kein „parsen“ von Textübertragungen nötig, sondern ganze Objekte auf einmal

Netzwerkprogrammierung 76

Page 77: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

java.io.Serializable Serializable ist ein leeres Flag-Interface durch Implementierung wird eine Klasse serialisierbar standardmäßig werden alle Datenelemente, die nicht

als static oder transient delariert sind, serialisiert Das gleiche gilt für alle Klassen, die von einer Klasse,

die dieses Interface implementiert, abgeleitet sind. Serializieren kann man mit einem Foto des aktuellen

Zustands vergleichen Viele Klasse innerhalb von Java sind bereits

serialisierbar

Netzwerkprogrammierung 77

Page 78: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

public class Auto implements java.io.Serializable {String Farbe;int kmStand;AutoTyp Typ;

}

public class AutoTyp implements java.io.Serializable {String Hersteller;String Typenschluessel;

}

Netzwerkprogrammierung 78

Page 79: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Netzwerkprogrammierung 79

ServerServer ClientClient

Farbe KmStand AutoTyp

Zeilen auslesen (parsen) und ein Objekt erzeugen.

Bisher:

Jetzt:

ServerServer ClientClient

Auto1 Auto2 Auto3

Fertige Objekte kommen an.

Page 80: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierungpublic class ServerSocket {

public static void main(String[] args){ServerSocket server;try { server = new ServerSocket(1111); // maximal 65536 while (true){// wiederhole immer wieder!

Socket client = server.accept();OutputStream out = client.getOutputStream();ObjectOutputStream objectOut = new ObjectOutputStream(out);InputStream in = client.getInputStream();ObjectInputStream objectIn = new ObjectInputStream(in);Auto a1 = new Auto();a1.Farbe = "blau"; a1.kmStand = 10000; a1.Typ = new AutoTyp();a1.Typ.Hersteller = "XYZ";objectOut.writeObject(a1); // schreiben eines Auto ObjektsobjectOut.flush();Auto a2 = (Auto)objectOut.readObject(); // empfangen eines AutoSystem.out.println(a2.Farbe); // auf Serverseite Farbe ausgebenclient.close();

}}catch (IOException ex){ System.out.println(ex); }

}}

Netzwerkprogrammierung 80

Page 81: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Fragen:Welche Nachteile hat dies gegenüber der

alten Variante mit Textzeilen?Was passiert wenn wir ein Objekt an den

Client senden, welches dieser nicht kennt (keine Java-Klasse vorhanden)?

Netzwerkprogrammierung 81

Page 82: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Klassen über das Netzwerk versendenMit Hilfe eines ClassLoaders können Klassen

dynamisch geladen werdenEin Interface beschreibt die Funktionsweise

der zu ladenden Klasse (damit der Client weiß, wie sie sich verhalten wird)

Klasse wird als ByteArray übertragen (Byte Array selbst ist serialisierbar problemlos per ObjectStream zu versenden )

Netzwerkprogrammierung 82

Page 83: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Der Class Loader ist dafür verantwortlich, alle verschiedenen Teile eines Programmes (Java-Klassen) zusammenzubringen, damit es ausführbar wird:

JVM

Bytecode

Internet

Class Loader

83Netzwerkprogrammierung

Page 84: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket ProgrammierungAufgaben:

Laden,Trennen und Verwalten von Klassen Einteilung in sicher/unsicher

Schutz der Java System-KlassenAnmerkungen: Verhindern von Überschreibung vertrauenswürdiger JVM-Klassen

durch gleichnamige Klassen von einem Webserver Erzeugung konkreter Klassen erst nach dem Verifikationsprozess Zugriffsrechte auf Elemente innerhalb der Systemklassen-Packages

( java.* ) müssen geschützt werden (Sichtbarkeitsbeschränkungen) Eigene Klassen dürfen deshalb nicht diesen Packages hinzugefügt

werden.

84Netzwerkprogrammierung

Page 85: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung 1 eingebauter Class Loader(Primordial Class Loader), der

für das Laden der System-Klassen verantwortlich ist meist in C geschrieben volle Rechtevergabe an geladene Klassen

es kann bel. viele zusätzliche Class Loader geben für Web-Browser z.B. gibt es den Applet Class

Loader für jeden zusätzlichen ClassLoader kann es mehrere

Instanzen geben – eine pro Codebasedamit:

eigene Namespaces keine Namenskollisionen keine Sichtbarkeit zwischen Namespaces

85Netzwerkprogrammierung

Page 86: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung Class Loader Hierarchie:

Bei der Suche nach Klassen wird eine Class Loader-Hierarchie durchlaufen:

direkte Kommunikation zwischen Class Loadern Suchreihenfolge:

System-Klassen lokale Klassen Remote-Klassen

Abgeleitete Class Loader(Java2):

Primordial Class Loaderjava.lang.ClassLoader

java.security.SecureClassLoader

java.net.URLClassLoader

AppletClassLoader

Applikation Applet

System-Klassen

86Netzwerkprogrammierung

Page 87: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket ProgrammierungDer Class File Verifier prüft, ob das Programm nach den Regeln der JVM läuft

das bedeutet nicht unbedingt, dass das Programm die Regeln von Java als Sprache befolgt

JVMBytecode

Regeln

Class File Verifier

Internet

Class

Class Loader

87Netzwerkprogrammierung

Page 88: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Die 4 Phasen der Verifikation: Datei-Integrität überprüfen

• Format(0xCAFEBABE), Länge Klassen-Integrität überprüfen

• Superklasse(wenn vorhanden) nicht final• Name und Signatur von Methoden und referenzierten Klassen

Bytecode-Integrität überprüfen• Datenfluß-Analyse• Stack-Checking• statische Typüberprüfung

Laufzeit-Integrität überprüfen• dynamische Typüberprüfungen

88Netzwerkprogrammierung

Page 89: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

InterfaceICalculator

ClassClient ClassServer

Calculator

Übertragung

Netzwerkprogrammierung 89

Interface beschreibt wie die Calculator Klasse arbeiten wird

Page 90: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

InterfaceICalculator

ClassClient ClassServer

CalculatorCalculator(lokale Kopie)

verwenden

Netzwerkprogrammierung 90

Page 91: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Interface für Calculator:

Netzwerkprogrammierung 91

public interface ICalculator {public int add(int a, int b);public int sub(int a, int b);public long times(int a, int b)public double div(double a, double b);public double power(double basis, double exp);

}

Page 92: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Die Klasse Calculator:

Netzwerkprogrammierung 92

public class Calculator implements java.io.Serializable, ICalculator {public Calculator() { }

public int add(int a, int b) { return (a+b); }public int sub(int a, int b) { return (a-b); }public long times(int a, int b) { return (a*b); }public double div(double a, double b) { return (a/b); }

public double power(double basis, double exp) { return(Math.pow(basis, exp)); }

}

Page 93: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

ClassServer:Stellt Java-Klassen zur VerfügungErwartet den Namen der zu übertragenden

KlasseSchickt dem Client die geforderte Klasse als

ByteArray zurück

Netzwerkprogrammierung 93

Page 94: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierungpublic class ClassServer {

public void server() {try {ServerSocket ss = new ServerSocket(1234); // TCP Socketwhile(true) {System.out.println("Server at: " + ss.getLocalPort() + ".");Socket s = ss.accept(); // Verbindung annehmenOutputStream out = s.getOutputStream();ObjectOutputStream objectOut = new ObjectOutputStream(out);InputStream in = s.getInputStream();ObjectInputStream objectIn = new ObjectInputStream(in);System.out.print("Connected...");String name = (String)objectIn.readObject();RandomAccessFile file =

new RandomAccessFile("classes/" + name + ".class", "r");byte data[] = new byte[(int)file.length()];file.readFully(data);objectOut.writeObject(data);objectOut.flush();System.out.print("object transmitted...");s.close();

}}catch(Exception e) { e.printStackTrace(); }}

Netzwerkprogrammierung 94

Page 95: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

NetClassLoader:Erbt von ClassLoader (eine fertige Java

Klasse) Implementiert findClass (String name)Stellt die Verbindung zum ClassServer her

und kommuniziert mit diesem ist der eigentliche Client unseres Programms

Netzwerkprogrammierung 95

Page 96: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierungclass NetClassLoader extends ClassLoader {

String host; int port;public Class findClass(String name) {

byte[] b = loadClassData(name);return defineClass(name, b, 0, b.length);

}private byte[] loadClassData (String name) {

try {Socket s = new Socket(host, port);System.out.print("Connection established...");InputStream in = s.getInputStream();ObjectInputStream objectIn = new ObjectInputStream(in);OutputStream out = s.getOutputStream();ObjectOutputStream objectOut = new ObjectOutputStream(out);objectOut.writeObject(name); // Namen der Klasse die wollenobjectOut.flush();Object o = objectIn.readObject(); // Klasse als Byte ArraySystem.out.print("object received...");s.close();System.out.println("connection closed.");return (byte[]) o;

}catch (Exception e) { return null; }}}

Netzwerkprogrammierung 96

Page 97: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

ClassClientBeispielanwendung für NetClassLoader um

eine Klasse zu beziehenVerwendet anschließend die dynamisch

geladene Klasse

Netzwerkprogrammierung 97

Page 98: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierungpublic class ClassClient {

private NetClassLoader classload = new NetClassLoader();

public Object getObject(String objectName) throws Exception{classload.port = 1234;classload.host = "localhost";Class c = classload.findClass(objectName);Object o = c.newInstance();return o;

}public void performTask() {

try { // get an instance (object) out of the classICalculator calc = (ICalculator)getObject("Calculator");System.out.println("6+7=" + calc.add(6, 7));

}catch(Exception e) {

System.err.println(e.getMessage());e.printStackTrace();

}}public static void main(String args[]) { new ClassClient().performTask(); }

}

Netzwerkprogrammierung 98

Page 99: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Fragen:Welche Vorteile sehen Sie im dynamischen

Laden von Klassen?Welche Nachteile können entstehen wenn die

Bezugsquelle unbekannt ist?

Netzwerkprogrammierung 99

Page 100: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Socket Programmierung

Zusammenfassung:Java Klassen über das Netzwerk dynamisch

übertragenObjectInputStream und

ObjectOutputStream kennen gelerntKann aber nicht mit „nicht Java“ Programmen

kombiniert werden

Netzwerkprogrammierung 100

Page 101: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 3

Entwickeln Sie eine Java-Anwendung die mit Hilfe von NetClassLoader eine Arbeiterklasse von einem Server holt, eine Instanz dieser Klasse abarbeitet und das Arbeitsergebnis zum Server zurücksendet.

Ziel: Verteilte Aufgabenverarbeitung – wie zum Beispiel beim SETI Projekt

Netzwerkprogrammierung 101

Page 102: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 3 Beispiel für eine Arbeiterklasse: Durch das Sieb des Eratosthenes kann man schnell

Primzahlen finden: Man füllt eine Liste mit Zahlen von 1 bis S (z.B. S=10000) n sei eine Variable man beginnt mit n=2 und sucht nun alle Vielfachen von n alle gefundenen Vielfachen werden aus der Liste gestrichen nun wird n auf die kleinste verbleibende Zahl gesetzt nach dem

letzten n (im ersten Fall n=3) man sucht wieder alle Vielfachen von n und streicht dieser aus

der Liste … ist n*n >= S kann der Algorithmus beendet werden Alle verbleibenden Zahlen in der Liste sind Primzahlen

Netzwerkprogrammierung 102

Page 103: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI

RMI (Remote Methode Invocation)Java-TechnologieObjekte auf einem entfernten Rechner

werden verwendet wie lokaleEignet sich auch zur IPC (Inter-Process

Communication) von Anwendungen auf dem selben Rechner

Netzwerkprogrammierung 103

Page 104: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI

Lokaler Rechner (Client)

SampleServer remoteObject;int s;…

s = remoteObject.sum (1,2);

System.out.println(s);

Entfernter Rechner (Server)

public int sum (int a, int b){ return a+b;}

1, 2

3

Netzwerkprogrammierung 104

Page 105: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMIClient Host

Client Host

RMIClient2

RMIClient1

Client – Side Java VM

Client – Side Java VM

Server Host

RemoteServerObject

Server – Side Web Serverund Java VM

Netzwerkprogrammierung 105

Page 106: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMIClient.java

verwendet

IRMIServer.java(Interface)

Server.java

verwendet

RMIServer.java(Implementation)

StubsRMIServer.java

SkeletonsRMIServer.java

Remote Reference Layer (RRL)

Transport Layer(TCP)

Transport Layer(TCP)

Wird vom Entwickler

erstellt

Wird von RMIC

erzeugt

Wird von J VM bereitgestellt und

verarbeitet

Netzwerkprogrammierung 106

RemoteServerObject

Page 107: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMIClient.java

verwendet

IRMIServer.java(Interface)

Server.java

verwendet

RMIServer.java(Implementation)

StubsRMIServer.java

SkeletonsRMIServer.java

returnAufruf

RMI - RegistryBind

(anmelden)

Lookup(nachschauen)

Netzwerkprogrammierung 107

RMI – Registry kennt alle Remote Server Objekte und ist Vermittler (Telefonbuch)

Page 108: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwenden

1. Interface für RemoteObject Klasse definieren 2. Implementation des RemoteObjects

entsprechend des Interfaces 3. Server Programm, welches das

RemoteObject an die RMI-Registry bindet 4. Client Programm entwickeln, welches das

Interface verwendet und von der RMI-Registry des Serverechners das RemoteObject holt

5. rmiregistry auf dem Server starten, rmic auf die Serverklasse anwenden, Server starten

Netzwerkprogrammierung 108

Page 109: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwendenimport java.rmi.Remote;import java.rmi.RemoteException;

public interface Hello extends Remote { String sayHello() throws RemoteException;}

import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;

public class Client { private Client() {} public static void main(String[] args) {

String host = (args.length < 1) ? null : args[0];try { Registry registry = LocateRegistry.getRegistry(host); Hello stub = (Hello) registry.lookup("Hello"); String response = stub.sayHello(); System.out.println("response: " + response);} catch (Exception e) { System.err.println("Client exception: " + e.toString()); e.printStackTrace();}

}}

import java.rmi.*;import java.rmi.registry.*;import java.rmi.server.UnicastRemoteObject;

public class Server implements Hello { public Server() {} public String sayHello() {

return "Hello, world!"; } public static void main(String args[]) {

try { Server obj = new Server(); Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("Hello", stub); System.err.println("Server ready");} catch (Exception e) { System.err.println("Server exception: " + e.toString()); e.printStackTrace();}

}}

Interface

ServerClient

Netzwerkprogrammierung 109

Page 110: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwendenServer:Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);Registry registry = LocateRegistry.getRegistry();// Registry registry = LocateRegistry.createRegistry(7777);registry.bind("Hello", stub);// registry.rebind(“Hello", stub);

Client:Registry registry = LocateRegistry.getRegistry("127.0.0.1");Hello stub = (Hello) registry.lookup("Hello");// Hello stub = (Hello )Naming.lookup("//hostname:port/Hello");

Netzwerkprogrammierung 110

Page 111: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwenden

Netzwerkprogrammierung 111

Page 112: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Ein Shopping Portal mit Java Programm Das Beispiel wird mit Hilfe von zwei Server-Objekten

implementiert: Ein zentrales Server-Objekt, das eingehende Verbindungen entgegennimmt und dafür zuständig ist, neue Sitzungen zu erzeugen.

Ein Warenkorb-Objekt für die Clients. Die Daten im Warenkorb werden von Client-Seite

hinzugefügt und auf dem Server im Warenkorb zwischengespeichert.

Netzwerkprogrammierung 112

Page 113: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Zunächst Interfaces anlegen Die Schnittstelle des zentralen Server-Objekts

hat dabei folgenden Aufbau:

import java.rmi.*; public interface ShopServer extends Remote { public Cart createCart() throws RemoteException; }

Netzwerkprogrammierung 113

Page 114: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Der Client ruft die Methode createCart() und bekommt ein Cart-Objekt zurück. Da der Inhalt des Warenkorbs auf dem Server gespeichert werden soll, bekommt er auch ein Interface:

import java.rmi.*; public interface Cart extends Remote { public void addProduct(String name) throws RemoteException; public void removeProduct(String name) throws RemoteException;

public String[] listContents() throws RemoteException; public void buy(String custID) throws RemoteException; }

Netzwerkprogrammierung 114

Page 115: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Man kann dem Warenkorb neue Produkte hinzufügen, Produkte entfernen, die vorhandenen Produkte auflisten und die Bestellung absenden.

Zur Vereinfachung werden die Produkte hier nur durch ihren Namen identifiziert.(normalerweise eine eigene Klasse Produkt)

Netzwerkprogrammierung 115

Page 116: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping Das zentrale Server-Objekt ist in ShopServerImpl implementiert. Besitzt eine main()-Methode, in der das Objekt beim Namensdienst

registriert wird. import java.rmi.*;

import java.rmi.server.UnicastRemoteObject; public class ShopServerImpl extends UnicastRemoteObject implements ShopServer { public ShopServerImpl() throws RemoteException { } public Cart createCart() throws RemoteException { System.out.println("create cart"); return new CartImpl(); } public static void main(String args[]) { try { Naming.rebind("shop-server", new ShopServerImpl()); } catch(Exception ex) { ex.printStackTrace(); } } }

Netzwerkprogrammierung 116

Page 117: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Beim Aufruf von createCart() wird ein neues Cart-Objekt zurückgegeben.

Implementierung in CartImpl Jeder User bekommt einen eigenen

Einkaufswagen

Netzwerkprogrammierung 117

Page 118: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

import java.rmi.server.UnicastRemoteObject; import java.rmi.RemoteException; import java.util.*; public class CartImpl extends UnicastRemoteObject implements Cart { List products; boolean pending = false;

public CartImpl() throws RemoteException { products = new ArrayList(); } public void addProduct(String name) { System.out.println("add product: "+name); products.add(name); }

Netzwerkprogrammierung 118

Page 119: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping public void removeProduct(String name) { System.out.println("remove product: "+name); products.remove(name); } public String[] listContents() { System.out.println("list contents"); String[] contents = new String[products.size()]; products.toArray(contents); return contents; } public void buy(String custID) { System.out.println("buy products: "+custID); pending = false; // Hier Bestellung verschicken ... } } Netzwerkprogrammierung 119

Page 120: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Wenn eine Server-Methode ein Objekt zurückgibt, das von UnicastRemoteObject erbt, wird nicht das Objekt serialisiert sondern es wird auf dem Server ein neues Remote-Objekt erzeugt

wenn der Client Methoden von Cart aufruft, werden diese Methoden auf Serverseite ausgeführt.

Netzwerkprogrammierung 120

Page 121: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping import java.rmi.Naming; public class ShopClient { public static void main(String args[]) { try { ShopServer server = (ShopServer)Naming.lookup("ShopServer"); Cart cart = server.createCart(); cart.addProduct("Visual Studio 2005"); cart.addProduct("Oracle Database");

String[] s = cart.listContents(); for(int i=0; i < s.length; i++) System.out.println(" - "+s[i]); cart.buy("Max Mustermann");

} catch(Exception ex) { ex.printStackTrace(); } } }

Netzwerkprogrammierung 121

Page 122: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beispiel: Internet Shopping

Fragen:Warum bleibt der Einkaufskorb auf dem

Server? Wie sieht die typische Datenanbindung einer

solchen Anwendung aus?

Netzwerkprogrammierung 122

Page 123: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwenden

Vorteile gegenüber herkömmlicher Socketprogrammierung:Minimale (technische Netzwerk-) Kenntnisse

nötig Transparent – als Entwickler sehen wir die

gesamte Übertragung nicht (Abstraktion)Fernsteuerung eines Serverprogramms

anstatt reines Austauschen von Daten

Netzwerkprogrammierung 123

Page 124: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwenden

Nachteile:RMI-Registry muss mitlaufen (eigener

Prozess mit eigenem Port)Die Datenübertragung erzeugt mehr

„Overhead“ RMI ist nur mit der Programmiersprache Java

verwendbar

Netzwerkprogrammierung 124

Page 125: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwenden

Fragen:Man kann bei mehreren Server Programmen

sowohl eine gemeinsame RMI-Registry verwenden, als auch jeweils eine eigene. Welche vorteile sehen Sie in beiden Lösungen?

Netzwerkprogrammierung 125

Page 126: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI verwenden

Zusammenfassung:RMI Architektur kennen gelerntRMI-Registry und RMIC verwendetUnterschied zwischen herkömmlicher

Socketprogrammierung und RMI aufgezeigt

Netzwerkprogrammierung 126

Page 127: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 4 Ein kleines DBMS auf der Basis von RMI Folgende Punkte soll der Server berücksichtigen:

Er implementiert einen ADT Person, mit den wichtigsten Eigenschaften, wie

ID Name Vorname Geburtsdatum etc.

Weiterhin implementiert er einen Vector, welcher mit n vielen Personen gefüllt ist. Der Vector soll den Namen personenVector tragen.

personenVector soll serverseitig in eine binäre Datei serialisiert werden. Verwenden Sie hierfür ObjectOutputStream bzw. ObjectInputStream und java.io.Serializable.

Netzwerkprogrammierung 127

Page 128: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 4 Er soll in einer Klasse DBServer, folgende

Methoden anbieten: Person getPerson(int id) Person[] getPersonByName(String name) Person[] getPersonByVorname(String vorname) void setPerson(Person p) void removePerson(Person p)

Der Client soll sich ein Objekt vom Typ DBServer verwenden und aus diesem verschiedene Personen aufrufen/setzen/löschen können.

Netzwerkprogrammierung 128

Page 129: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

.NET bietet im wesentlichen zwei Konzepte für Netzwerkprogrammierung:

System.Runtime.Remoting High Level Sprachelemente für RPC / Remote Objects Wahlweise über BinaryTCP oder HTTP-SOAP (XML)

System.Net.Sockets Low Level Sprachelemente Sockets wie wir schon mit Java hatten

Netzwerkprogrammierung 129

Page 130: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Ein Objekt wird vom Server für alle Clients zur Verfügung gestellt

Clients können das Objekt „fernsteuern“

Direkt vergleichbar mit RMI

Netzwerkprogrammierung 130

Page 131: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Verwendung von 3 Projektmappen in VS 1 Server Programm 1 Client Programm 1 gemeinsam genutzte

Klassen-Bibliothek

Netzwerkprogrammierung 131

Page 132: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Netzwerkprogrammierung 132

Alle Klassen müssen von MarshalByRefObject erben um RemoteObjekte zu sein

public class MyServerObject : MarshalByRefObject { private int Usercount;

public int GetUsercount() { return Usercount; }

public void IncrementUsercount() { Usercount++; System.Console.WriteLine("Usercount ist nun: " + Usercount); } public void DecrementUsercount() { Usercount--; System.Console.WriteLine("Usercount ist nun: " + Usercount); } }

Page 133: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Netzwerkprogrammierung 133

Bibliotheken einbinden

http Channel auf Port 8880 öffnen

http Server wieder schließen

static void Main(string[] args) { HttpChannel channel = new HttpChannel(8880); // Port ChannelServices.RegisterChannel(channel, false);

// Server über port 8880 ist hier offen RemoteObjects.MyServerObject server = new RemoteObjects.MyServerObject(); RemotingServices.Marshal(server, "server"); System.Console.WriteLine("Server gestartet..."); System.Console.ReadLine(); // warte auf Taste zum beenden

ChannelServices.UnregisterChannel(channel); }

Page 134: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Netzwerkprogrammierung 134

Arbeiten wie lokales Objekt

static void Main(string[] args) { RemoteObjects.MyServerObject server = (RemoteObjects.MyServerObject) Activator.GetObject (typeof(RemoteObjects.MyServerObject), "http://127.0.0.1:8880/server");

// Zugriff auf das Server Objekt server.IncrementUsercount(); System.Console.WriteLine("Du bist der " + server.GetUsercount() + " User"); System.Console.ReadLine(); // warte auf Taste zum beenden

server.DecrementUsercount(); }

Page 135: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Netzwerkprogrammierung 135

Page 136: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Methoden werden auf dem Server ausgeführt Über einen Channel können beliebig viele

Objekte registriert werden (ähnlich der RMI-Registry)

TcpChannel ist binär (weniger Overhead als SOAP)

EventHandler für Kommunikation zwischen Klassenbibliothek und Programmen

Netzwerkprogrammierung 136

Page 137: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Netzwerkprogrammierung 137

wenn Handler festgelegt wurde dann ausführen

Page 138: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Netzwerkprogrammierung 138

Page 139: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET Remoting

Vergleich .NET Remoting zu RMIWenn das SOAP Protokoll verwendet wird,

theoretisch auch mit Programmen anderer Programmiersprachen koppelbar

„RMI-Registry“ hier prinzipiell kein extra Programm

Bleibt vorwiegend auf Windows BS beschränkt

Netzwerkprogrammierung 139

Page 140: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET Remoting

Beide Konzepte sind sehr ähnlich Beide haben den Nachteil:

Der Server kann selbständig keine Nachrichten zum Client senden!

Client stößt Methode auf Server an und bekommt Ergebnis zurück

Netzwerkprogrammierung 140

Page 141: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET Remoting

Client Host

RMIClient1

Client – Side Java VM

Server Host

RemoteServerObject

Server – Side Web Serverund Java VM

Anfrage

RemoteObject wie lokales behandeln

Antwort

Netzwerkprogrammierung 141

Page 142: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET Remoting

Client Host

RMIClient1

Client – Side Java VM

RemoteServerObject

Netzwerkprogrammierung 142

gedachtes Ergebnis:

Page 143: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET Remoting

Der so genannte „Callback“:Server kann zu einem beliebigen Zeitpunkt

den Client über Ereignisse informieren Beispiel:

Auktionshaus: Alle Clients können Gebote abgeben Clients sollen stets das höchstgebot angezeigt

bekommen

Netzwerkprogrammierung 143

Page 144: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET RemotingClient Host

RMIClient1

Client – Side Java VM

Client Host

RMIClient2

Client – Side Java VM

Server Host

RemoteServerObject

Server – Side Web Serverund Java VMTeilt mit: Aktuelles

Gebot bei 10€

Sendet ein Gebot von 10€

Client Host

RMIClient3

Client – Side Java VM

Teilt mit: Aktuelles Gebot bei 10€

Client Host

RMIClient4

Client – Side Java VM

Teilt mit: Aktuelles Gebot bei 10€

Netzwerkprogrammierung 144

Page 145: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET Remoting

Realisierung von Callbacks:Client wird selbst zu einem Server und stellt

RemoteObject bereitClient meldet sich am Server an (wie immer)Client teilt Server mit wie man ihn

„zurückrufen“ kannServer führt Liste über alle Clients

Netzwerkprogrammierung 145

Page 146: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

RMI und .NET Remoting

Fragen:Welche Nachteile ergeben sich durch den

Einsatz von Callbacks? (Bezug Firewalls, NATs)

Netzwerkprogrammierung 146

Page 147: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 5 Entwickeln Sie eine RMI oder .NET Remoting

Anwendung mit Callbacks Auktionshaus mit n Teilnehmern und mehreren

Artikeln Client sollte kleine GUI besitzen in der Gebote

abgegeben werden können und Artikel angesehen/ausgewählt werden können

Prüfung ob ein abgegebenes Gebot > aktuelles Höchstgebot ist

Netzwerkprogrammierung 147

Page 148: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Problem

In der realen Welt werden verschiedenste Technologien zusammen verwendet (Java, RMI, .NET …)

Sockets arbeiten gut zusammen auch mit unterschiedlichen System aber sind schwer zu entwickeln (aufwendig).

wir benötigen etwas unabhängiges und leistungsstarkes

Netzwerkprogrammierung 148

Page 149: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Eine Lösung: WebServices Jeder Betreiber stellt Services bereit Clients greifen auf diese zu

Beispiel: Google sucht für uns im Internet Verwenden von Google WebService um in einem eigenen Projekten Google-Suche anbieten zu könne.

Netzwerkprogrammierung 149

Page 150: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Alternative zu RMI und .NET RemotingPlattformunabhängigSprachunabhängig

(Perl,Java,C++,.NET,PHP,…)Beispiele: Google, Amazon, .NET PassportAuf HTTP (Web-Server) aufgesetzt, damit

kein zusätzlicher Port nötig, gut erreichbar auch hinter Firewalls

Webservices sind in der Regel „zustandslos“

Netzwerkprogrammierung 150

Page 151: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Fragen:Welche Vorteile bietet WebServer als Träger

noch?Kann es dadurch auch Nachteile/Probleme

geben?

Netzwerkprogrammierung 151

Page 152: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices Ziel:

Nachrichten zwischen Client und Server können von allen Plattformen und Programmiersprachen gelesen/geschrieben werden!

Vision:Alle Server der Welt bieten Services an und wie in einem Telefonbuch können die Clients diese verwenden

Netzwerkprogrammierung 152

Page 153: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

WebServiceConsumer (Client)

WebServiceProvider (Server)

Application Logic

Application Logic

DB

WS-Toolkit WS-Toolkit

Message (SOAP)

Netzwerkprogrammierung 153

Page 154: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Netzwerk TCP/IP

Transport HTTP

WebServiceConsumer (Client)

WebServiceProvider (Server)

Application Logic

Application Logic

DB

WS-Toolkit WS-Toolkit

Message (SOAP)

WSDL

Liest

Beschreibt

Netzwerkprogrammierung 154

Page 155: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

Woher weiß der Client wo ein Server steht und welche WebServices er anbietet?

Netzwerkprogrammierung 155

Dienst finden

Dienst bekanntgeben

Page 156: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

Wie kann man nun die angebotenen Dienste beschreiben?

public String[] doGoogleSearch (String s){…}

Netzwerkprogrammierung 156

Wie soll dies ein Scheme Program verstehen?

Page 157: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

WSDL XML-Sprache zur Selbstbeschreibung von

WebServices

WSDL Beispiel: http://www.webservicex.net/globalweather.asmx?wsdl http://api.google.com/GoogleSearch.wsdl http://www.webservicex.net/CreditCard.asmx?wsdl CreditCard WS - was halten Sie davon?

Netzwerkprogrammierung 157

Page 158: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

Mit WSDL wird der Aufbau von Methoden und deren Parametern beschrieben.

Spezifische Angaben über Art, Menge …

Primitive Datentypen wie String, Integer, Array … müssen vereinheitlicht werden !

Netzwerkprogrammierung 158

Page 159: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

SOAP (Simple Object Access Protocol) XML basierte Sprache um Nachrichten

auszutauschen (Client Server) SOAP wird in der Regel durch WS-Kit

erstellt und ausgewertet Ursprünglich von MS Entwickelt für

XML-RPC .NET Remoting kann SOAP

Netzwerkprogrammierung 159

Page 160: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices Google Suchanfrage stellen mit SOAP Nachricht:

<SOAP-ENV:Body> <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch"

SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <keyxsi:type="xsd:string">00000000000000000000000000000000</key> <q xsi:type="xsd:string">das hier sind die Schlüsselworte</q> <start xsi:type="xsd:int">0</start> <maxResults xsi:type="xsd:int">10</maxResults> <filter xsi:type="xsd:boolean">true</filter> <restrict xsi:type="xsd:string" /> <safeSearch xsi:type="xsd:boolean">false</safeSearch> <lr xsi:type="xsd:string" /> <ie xsi:type="xsd:string">latin1</ie> <oe xsi:type="xsd:string">latin1</oe> </ns1:doGoogleSearch></SOAP-ENV:Body>

Netzwerkprogrammierung 160

Page 161: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Aus einer WSDL Datei kann man sich automatisch eine Proxy-Klasse erzeugen lassen (.NET, Java).

Auch Internetseiten können automatisch generiert werden (zum gerade entwickelten WS)

Beispiel mit .NET

Netzwerkprogrammierung 161

Page 162: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

Selbst einen WS entwickeln und anbieten:Eine eigene Klasse erbt von einer Basis-

Webservice Klasse (System.Web.Services.WebService in .NET)

Diese Klasse = WS Klasse die wir im Client mit …WS w = new …WS(); instanziieren.

Entwicklung von Methoden wie immer Kennzeichnen der Methoden die von außen

verfügbar sein sollen ([WebMethod] in .NET)

Netzwerkprogrammierung 162

Page 163: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebService

WebServices benötigen einen WebServer (in der Regel)

Damit eher ungeeignet für IPC (Inter Process Communication)

Entwicklung und Setup von WS ist ja nach Sprache und BS leicht unterschiedlich

Netzwerkprogrammierung 163

Page 164: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Nachteile: Großer Daten Overhead XML Parsen verbraucht Zeit Es gibt derzeit kein einheitliches Modell zur

Authentifizierung eines Clients Beispiele: Google-Key oder .htaccess (Beschränkung wie eine normale HTML Seite)

Google hat am 6.12.2006 seinen WebService wieder eingestellt (es werden keine neuen Keys mehr vergeben)

Netzwerkprogrammierung 164

Page 165: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Fragen:Welche Vorteile entstehen durch den Einsatz

von Webservices im Internet?Kann man Callbacks verwenden?Welche Probleme kommen besonders zum

tragen, wenn SOA (Service Oriented Architecture) eingesetzt wird (viele Webservices für unterschiedliche Aufgaben)?

Netzwerkprogrammierung 165

Page 166: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

WebServices

Zusammenfassung:Sowohl WebServices, RMI und .NET

Remoting besitzen einen sehr ähnlichen Grundkonzept

Mit steigender Abstraktion entsteht mehr „Overhead“ langsamer, mehr unerwünschte Datenübertragung

Netzwerkprogrammierung 166

Page 167: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beleg - Projekte

Entwickeln Sie eine Client-Server Projekt welches eines oder mehrere der vorgestellten Konzepte (Sockets, RMI, Remoting, WS,…) verwendet.

Netzwerkprogrammierung 167

Page 168: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beleg – Projekte Ideen

Sockets:Email Client alla Outlook (vereinfacht)FTP Client oder ServerChat Applet & Server …

RMI / .NET RemotingSchach ApplikationDiverse Kartenspiele…

Netzwerkprogrammierung 168

Page 169: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beleg – Projekte Ideen

WS:Warenhaus Artikelsuche

(mit DB und vielleicht Hibernate, …)Einheiten-Umwandler-Service

(€ $, m cm…)Verschlüsslungsservice (Text Crypted)ChartService (Wertliste Chart-Grafik)

- Rückgabe ist ByteArray für JPEG Bild o.ä.…

Netzwerkprogrammierung 169

Page 170: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Beleg – Projekte Ideen

Stellen Sie mir ihr Projekt vor (welchen Inhalt soll es haben, wie wollen Sie es umsetzen)

Diskussion

Netzwerkprogrammierung 170

Page 171: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Java Programme die nur in einer abgeschlossenen Laufzeitumgebung arbeiten (z.B.:Web-Browser, Appletviewer)

Ein Applet wird häufig in eine Website eingebettet

Programmcode wird aus dem Internet geladen und auf dem lokalen Rechner ausgeführt

Netzwerkprogrammierung 171

Page 172: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets Sandbox-Prinzip in Analogie zu einem Kind, das in seinem Sandkasten

keinen Schaden anrichten kann Der Zugriff auf die Umgebung wird durch ein spezielles

Objekt, den Sicherheitsmanager, gesteuert Der Sicherheitsmanager, wird bei der Initialisierung der

JVM festgelegt - Applet kann nichts ändern Verboten:

Zugriffe auf das Dateisystem des lokalen Rechners Zugriff auf Daten des Benutzers (Nutzername, Zwischenablage

etc.) Netzwerkverbindungen zu anderen Rechnern als dem Server,

von dem das Applet geladen wurde Starten von Programmen Änderung der Sicherheitseinstellungen

Netzwerkprogrammierung 172

Page 173: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Applets besitzen keine „main“ Methode aber dafür: init() - wird genau einmal aufgerufen, wenn das Applet erstmals

in den Browser geladen wird. start() - wird jedes Mal aufgerufen, wenn das Applet sichtbar

wird. stop() - wird jedes Mal aufgerufen, wenn das Applet verdeckt

wird, z. B. weil das Browser-Fenster von einem anderen Fenster überdeckt wird. (klappt aber nicht immer so wie soll!)

destroy() - wird aufgerufen, wenn das Applet aus dem Hauptspeicher entladen wird.

Netzwerkprogrammierung 173

Page 174: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

init () start () stop () destroy ()

Seite verlassen

Zurück zur Seite

Seiteangezeigt

Appletvernichten

Appleterstellen

Netzwerkprogrammierung 174

Blau = einmaligGrün = kann mehrmals auftreten

Page 175: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Wichtig: Applets werden in der Regel NIE zerstört solange der betreffende Browser läuft! stop() verwenden um Resourcen freizugeben

Applets in HTML Seiten einbinden:

<applet code="Applet.class" width=300 height=400>     <param name="p1" value="param1"> 

</applet>

Netzwerkprogrammierung 175

Page 176: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Netzwerkprogrammierung 176

SELFHTML Beispiel

Page 177: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Applet kann neben „Grafikspielereinen“ aber auch „Frontend“ für eine echte Anwendung sein

Oft liegt Datenbank auf dem Server und Kommunikation mit Applet ist notwendig

RMI / Sockets können verwendet werden, um Applet mit einer Server-Applikation zu verbinden

Netzwerkprogrammierung 177

Page 178: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Hinweise zur Entwicklung von Applets: IDE wie NetBeans eignet sich gut zur Entwicklung Appletviewer (als Testwerkzeug) Browser Cache bei Applets beachten! Internet Explorer

(Java-Konsole verwenden – „X“ für Cache leeren!) FireFox muss neu gestartet werden um Cache zu

leeren.

Netzwerkprogrammierung 178

Page 179: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Appletsimport java.applet.*;import java.awt.Graphics;import java.awt.Font;

public class HalloApplet extends Applet {Font f;

public void init() {String Schriftart = getParameter("Font");f = new Font(Schriftart, Font.BOLD, 18); System.out.println("Java-Konsole: init... !");

}public void paint(Graphics g) {

g.setFont(f);g.drawString("Hallo Welt!", 50, 25);System.out.println("Java-Konsole:

paint... !");}

public void stop() {System.out.println("Java-Konsole:

stop... !");}

} Netzwerkprogrammierung 179

<APPLET CODE="HalloApplet.class" WIDTH="260" HEIGHT="40"> <PARAM name="Font" value="Arial">

</APPLET>

Page 180: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Applets in JAR Archiven verpackenMehrere Dateien können in ein Archive (wie

ZIP) verpackt werden Im Web muss dann nur eine Datei

heruntergeladen werden (wird auf dem Client entpackt)

JAR Archive können „signiert“ werden

Netzwerkprogrammierung 180

Page 181: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

JAR Archive erzeugen jar cvf AppletArchive.jar *.classEin Archive erstellen und alle Class-Files im

aktuellen Ordner einbindenEs können aber auch alle anderen Dateien

(Bilder, HTML Dateien,…) eingebunden werden

Netzwerkprogrammierung 181

Page 182: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Applet in Webseite mit Archive einbinden:

Netzwerkprogrammierung 182

<APPLET ARCHIVE="Archiv.jar" CODE="HalloApplet.class" WIDTH="260" HEIGHT="40"> <PARAM name="Font" value="Arial">

</APPLET>

Page 183: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Wichtige Informationen innerhalb des Applets abrufen: String p1 = getParameter ("param1");

liest einen Applet Parameter der über HTML übergeben wurde ein

java.net.URL db = getDocumentBase();Gibt die URL des HTML Dokuments zurück in dem das Applet eingebettet ist.

Image whiteBoard = getImage (db, "White.jpg");Ein Bild relativ zum HTML Dokument ins Applet laden

Netzwerkprogrammierung 183

Page 184: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Fragen:Macht es Sinn, große Anwendungen in

Applets über den Browser zu verwenden?(bezüglich Dateigröße, Aktualität der Programmversion,…)

Könnte unser NetClassLoader unter Umständen Problemen entgegenwirken?

Netzwerkprogrammierung 184

Page 185: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Applets

Zusammenfassung:Die meisten Java Anwendungen können mit

wenig Aufwand in Applets umstrukturiert werden

Inhalt der main() Methode dafür in die init() Signierte Applets bieten derzeit den größten

Leistungsumfang (mehr als Flash)

Netzwerkprogrammierung 185

Page 186: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Technologie um Java-Anwendungen direkt über das Internet zu installieren und auszuführen.

Kern ist das JNLP (Java Network Launching Protocol) ~ „Intstallationsbeschreibungssprache“

Netzwerkprogrammierung 186

Page 187: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Vorteile von Webstart:Keine Konfiguration vom Anwender nötigKeine typische Installation mit „Zielverzeichnis“,

„Full, Medium, Small“ oder ähnlichemBei einer neuen Programmversion (auf dem

Server) wird beim nächsten Programmstart (Anwender) automatisches Update durchgeführt

Netzwerkprogrammierung 187

Page 188: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Unterschied zu Applets:Applet wird im Browser ausgeführt

(WebStart Applikation wird heruntergeladen und bleibt auf Anwender-PC)

Browser ist nur zum Auffinden

Netzwerkprogrammierung 188

Page 189: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Voraussetzungen (Server):Web-Server (z.B.: Apache)MIME Type muss gesetzt seinProgramm muss in JAR Dateien verpackt sein

Voraussetzungen (Client):Java JRE muss installiert sein (1.3+) Internet Browser (IE, FireFox,…)

Netzwerkprogrammierung 189

Page 190: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Schritt 1: Anwendung entwickeln Schritt 2: In JAR Datei Verpacken Schritt 3: MIME Type im WebServer setzen Schritt 4: JAR Dateien in HTDOCS

(Web-Root) kopieren Schritt 5: JNLP Datei anlegen (XML)

Netzwerkprogrammierung 190

Page 191: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Aufruf aus einer HTML Seite über: <a href="webstart.jnlp" >Anwendung Starten</a>

Sandbox:Auch WebStart Applikationen laufen im

Sandboxmodus – mit signed JARs auch volle Rechte möglich

Netzwerkprogrammierung 191

Page 192: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

Beispiel mit NetBeans und Apache:Einfache Fensteranwendung NetBeans anweisen eine JAR Datei für das

Projekt anzulegenApache Server konfigurieren:

Apache/conf/mime.types editieren application/x-java-jnlp-file jnlp einfügen

JNLP Datei erstellen und mit JARs zusammen in einen Ordner legen im Apache HTDOCS.

Netzwerkprogrammierung 192

Page 193: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java WebstartJNLP Datei Beispiel:

<?xml version="1.0" encoding="utf-8"?><jnlp spec="1.0+“ codebase="http://127.0.0.1/dist" href="webstart.jnlp"> <information> <title>Demo</title> <vendor>Wir</vendor> <description>Unser Demo Programm</description> <homepage href="http://www.hs-zigr.de"/> <offline-allowed/> <shortcut online="false"> <desktop/> <menu submenu="Superdemos"/> </shortcut> </information>…

Netzwerkprogrammierung 193

Page 194: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java WebstartJNLP Datei Beispiel:

… <resources> <jar href="WebStart.jar"/> <jar href="lib/swing-layout-1.0.jar"/> <j2se version="1.4+" href="http://java.sun.com/products/autodl/j2se" /> </resources> <application-desc main-class="webstart.Form"/></jnlp>

Netzwerkprogrammierung 194

Page 195: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Webstart

JNLP APIFunktionen für OpenDialog, SaveDialog,

PrintDialog,… auch in nicht signierten JAR‘sWenn nur diese Funktionalität benötigt wird

deutlich sicherer als signiertes JAR Benötigt jnlp.jar als Bibliothek (API Referenz)

Netzwerkprogrammierung 195

Page 196: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 6

Verwenden Sie das DBMS aus Übung 4 und entwickeln Sie ein Java-Applet als Client

Der Server bleibt dabei unverändert

Verwenden Sie das nachfolgende Tutorials um ihr Java-Applet in ein JAR zu verpacken und selbst zu signieren:

http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

http://java.sun.com/developer/technicalArticles/Security/Signed/

Netzwerkprogrammierung 196

Page 197: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET im Browser

Früher ActiveX heute .NET Ermöglicht es genau wie bei Applets

Anwendungen über Browser auszuführen Sandbox-Modus wie bei Applets Keine besondere „Appletklasse“ von der

abgeleitet werden muss

läuft nur im Internet Explorer und nur bei installiertem .NET Framework

Netzwerkprogrammierung 197

Page 198: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET im Browser

Netzwerkprogrammierung 198

Page 199: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET im Browser

Netzwerkprogrammierung 199

Page 200: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET im Browser

VS erzeugt eine DLL bei Kompilation Einbinden in HTML Seite über:

<html><body><object id="simpleControl1" classid="http:./Control1.dll#Control1.UserControl1“ height="338" width="744" VIEWASTEXT></object></body></html>

Netzwerkprogrammierung 200

Page 201: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET im Browser

Einbindung funktioniert leider nicht lokal DLL muss auf einen Webserver gelegt

werden Vorzugsweise IIS, Apache kann auch dazu

konfiguriert werden http://84.16.228.218/applet/run.html

http://84.16.228.218/applet/cards.html

Netzwerkprogrammierung 201

Page 202: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

.NET im Browser

Zusammenfassung:Konzept nahezu identisch mit Java-AppletsNicht plattformunabhängig (eventuell mit

Mono unter Linux)Sprachunabhängig, sowohl J#, C#, VB#

eignen sich zur Entwicklung

Netzwerkprogrammierung 202

Page 203: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Serverseitige Programmierung

Applets und .NET Browserprogramme werden auf dem Client ausgeführt

Bestimmte Aufgaben kann der Client jedoch alleine nicht lösen (Datenbank, dynamische Generierung von Dokumenten, …) Wenn nur wenige Daten vom Server benötigt werden,

dann Applet sinnvoll Wenn sehr viele Daten vom Server verarbeitet

werden müssen, dann lieber gleich serverseitige Anwendung verwenden und „thin-Client“

Netzwerkprogrammierung 203

Page 204: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Serverseitige Programmierung

Der ServerKeine zusammenhängende AbarbeitungRequests müssten zugeordnet werdenSpeicherobjekte gehen ohne explizite

Sicherung nach jedem Response verlorenVor jeder Requestverarbeitung müssen

vorangehende Speicherobjekte wiederhergestellt werden

Page 205: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Servlets

Das Java Konzept für dynamische Webseitengenerierung auf Serverseite

Servlet = Java Klasse in einem J2EE Webserver Servlet-Container (z.B.: Tomcat) läuft.

Ein Servlet ist prinzipiell vergleichbar mit einem WebService nur ohne SOAP

Methoden doGet(…) und doPost(…) werden aufgerufen wenn eine Anforderung eintrifft

Netzwerkprogrammierung 205

Page 206: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Quelle: Wikipedia

Netzwerkprogrammierung 206

Page 207: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Rückblick auf HTTP und Webserver mit Sockets Request Header

Welche Datei soll vom Server abgerufen werden Cookies im Header Browsertyp …

Response Header Status Code (200,404,403…) Content-Type (text/html, image/jpeg,…) Daten (HTML Seite, Bild…)

Netzwerkprogrammierung 207

Page 208: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Web-Server(www.google.de)

Client

GET / HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, */*Accept-Language: deUA-CPU: x86Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)Host: 127.0.0.1:81Connection: Keep-Alive

12

HTTP/1.1 200 OKCache-Control: privateContent-Type: text/htmlSet-Cookie: PREF=ID=5d5b86a54ea78fff:TM=1172152002:LM=1172152002:S=yRZldpnO3qqV9FoT; expires=Sun, 17-J an-2038 19:14:07 GMT; path=/; domain=.google.comServer: GWS/2.1Transfer-Encoding: chunkedDate: Thu, 22 Feb 2007 13:46:42 GMT

<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><style><!--body,td,a,p,.h{font-family:arial,sans-serif}.h{font-size:20px}.h{color:#3366cc}.q{color:#00c}--></style><script><!--function sf(){document.f.q.focus();} ……………

34

Netzwerkprogrammierung 208

Page 209: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Servlet Beispiel

public class NewServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); }

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><head><title>Servlet NewServlet</title></head>"); out.println("<body>"); out.println("<h1>Servlet NewServlet at " + request.getContextPath () + "</h1>"); out.println("</body>"); out.println("</html>"); out.close(); }

Netzwerkprogrammierung 209

Page 210: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Servlet Beispielpublic class ImageCreator extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("image/jpeg"); ServletOutputStream out = response.getOutputStream(); // JPEG Bild erzeugen BufferedImage bi = new BufferedImage(300, 150, BufferedImage.TYPE_INT_RGB); Graphics2D big = bi.createGraphics(); big.drawString("Generarted Image",10,20); big.drawString((new Date()).toString(),10,50); ByteArrayOutputStream o = new ByteArrayOutputStream(); try { JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(o); JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi); param.setQuality(1.0f, false); encoder.setJPEGEncodeParam(param); encoder.encode(bi); } catch (Exception ex) { ex.printStackTrace(); } out.write(o.toByteArray()); out.close(); }

Netzwerkprogrammierung 210

Page 211: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Server Pages

Einige Servlets erzeugen pure HTML Ausgabe und haben nur kleine Code Elemente eingebettet.

Hierfür eignet sich JSP (Java Server Page)

Netzwerkprogrammierung 211

Page 212: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Java Server Pages

Arbeitsweise für den Entwickler wie PHP Programmcode wird in eine HTML Seite eingebettet

(Endung .jsp) <title>

<% int v1 = 0; out.println("Der Wert der Variable: " + v1); %> </title>

JSP wird im Hintergrund in ein Servlet übersetzt welches mit println() die HTML Teile ausgibt.

Netzwerkprogrammierung 212

Page 213: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 213

Page 214: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 214

Page 215: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 215

Page 216: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Bei Ausführung startet ein Browser:

Netzwerkprogrammierung 216

Page 217: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 217

Page 218: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 218

Page 219: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 219

Page 220: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Netzwerkprogrammierung 220

Page 221: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Entwicklung mit NetBeans

Fragen: Welche Vorteile besitzt eine serverseitige Lösung

gegenüber einer clientseitigen, bezüglich der Datensicherheit?(z.B.: Applet verbindet sich direkt mit Datenbank auf dem Server)

Welche Anforderungen haben serverseitige Lösungen an den Client?

Welchen Nachteile haben serverseitige Programme?

Netzwerkprogrammierung 221

Page 222: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Sessionmanagement

wie WebServices sind Servlets von Haus aus „zustandslos“

In Webapplikationen ist es aber fast immer nötig zu wissen, welcher Client gerade eine Anfrage sendet (zum Beispiel Internet-Shopping)

Session-Management nötig !

Netzwerkprogrammierung 222

Page 223: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Servlet / JSP Sessionmanagement

public class LoginServlet extends HttpServlet { protected void processRequest(…) throws … {

String user = request.getParameter("user"); String pass = request.getParameter("pass");

// Passwort & Benutzernamen überprüfen würde hier passieren HttpSession s = request.getSession(true); s.setAttribute("username",user); response.sendRedirect("index.jsp"); }

Netzwerkprogrammierung 223

Page 224: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 7

Verwenden Sie NetBeans IDE und erstellen Sie eine dynamische Webseite mit JSP Dabei soll auch ein Formular vorhanden sein

(mit Eingabefeldern) Erstellen Sie ein Servlet, welches die

Eingegebenen Werte des Formulars verarbeitet Servlet soll ein Ergebnis seiner Verarbeitung

zurückliefern

Hinweis: Sie benötigen im Servlet: request.getParameter("EingabefeldName");

Netzwerkprogrammierung 224

Page 225: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Übungsaufgabe 7 Ein Beispiel:

Netzwerkprogrammierung 225

Page 226: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

ASP .NET

.NET Variante von Java Servlets/JSP Teilung von HTML (ASP Seite) und Quelltext

(Code-Behind) in einer .NET Sprache wie C# Seitenelemente sind Objekte (Textfelder,

Buttons,…) – keine einfachen HTML Elemente mehr

Java hat dieses Konzept wieder kopiert und nennt es „Java Server Faces“ Framework

Netzwerkprogrammierung 226

Page 227: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

ASP .NET Request und Response Objekte genau wie in Java Sessionkonzept ist nahezu identisch umgesetzt

wie in Java Vorteile von .NET wie

Schnelles einbinden von WebServices XML DOM …

Nachteile Nur IIS (Windows WebServer)

Netzwerkprogrammierung 227

Page 228: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

ASP .NET - Beispiel

Login Seite geschützte Seite die Login erfordert

Netzwerkprogrammierung 228

Page 229: Netzwerk- programmierung Sommersemester 2007. Inhalt der LV Grundlegende Begriffe Konzepte des WWW HTML (DOM, JS, CSS, XHTML) HTTP Protokoll Socketprogrammierung.

Zusammenfassung

Auch auf Serverseite sind die Konzepte zwischen Java und .NET sehr ähnlich.

In der Realität werden alle besprochenen Technologien sehr heterogen eingesetzt.

Webapplikationen bieten viel Potential doch auch herkömmliche Client/Server Anwendungen werden relevant bleiben.

Aber auch „low-Level“ Netzwerkprogrammierung bleibt wichtig!

Sie sollten mit allen Technologien vertraut sein

Netzwerkprogrammierung 229