• Keine Ergebnisse gefunden

Techniken der Projektentwicklung

N/A
N/A
Protected

Academic year: 2022

Aktie "Techniken der Projektentwicklung"

Copied!
30
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Themen Threading Netzwerk

Techniken der Projektentwicklung

Threading & Netzwerkprogrammierung

Ingo L¨utkebohle

Termin 13

(2)

Themen Threading Netzwerk

Themen heute

Kurze Wiederholung von und Praxis-Beispiele zu:

Threading Synchronisation zwischen Threads HTTP Verwendung von HTTP und URLs

Sockets Netzwerkkommunikation mit TCP-Sockets

(3)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Motivation: Threading

Anwendungsf¨alle f¨urunabh¨angige Abl¨aufe mit geteilten Daten.

GUIs Benutzerinteraktion w¨ahrend zeitraubender Hintergrundaktivit¨aten

Server Ein Netzwerk-Server, mehrere Clients gleichzeitig Performance Verteilung von Berechnungen ¨uber mehrere CPUs

(wenn vorhanden)

(4)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Threads erzeugen

Thread Unabh¨angiger Ausf¨uhrungskontext Runnable Das, was ausgef¨uhrt wird.

1 In eigener Klasse Runnableimplementieren

2 Threaderzeugen, Instanz der Klasse aus (1) ¨ubergeben

3 Thread starten

http://java.sun.com/docs/books/tutorial/essential/threads/

(5)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Komplikationen

Gleichzeitige Verwendung von Datenstrukturen aus mehreren Threads kann zu Konflikten f¨uhren, sog. Race Conditions

→ Synchronisation notwendig Synchronisation beinhaltet warten

fehlerhafte Synchronisation → sog.Deadlock

”Gleichzeitige“ Ausf¨uhrung auf einer CPU nur angen¨ahert, Scheduler unterbricht nur an bestimmten Punkten (z.B. IO)

→ Thread.yield()

(6)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Race Conditions

TextproblemZwischen zwei atomaren Operationen k¨onnen andere Threads Daten ¨andern. Ein Trivialbeispiel:

Thread 1 if(val < 0) {

int exp = 2val; ...

}

Thread 2 if(val < 0) {

val = abs(val);

...

}

Was passiert in der Zeit zwischen Test und Verwendung der Variable?

(7)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Einfache Synchronisation

Critical Section

nur ein Thread kann gleichzeitig in der critical section sein In Java: synchronizedobjektbasierte critical sections

Pro Instanz kann nur ein Thread inirgendeinercritical sectiondieser Instanz sein

wait/notify

wait()alt an, bisnotify()aufgerufen wird

muss in critical section ausgef¨uhrt werden

(8)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Dining Philosophers

Situation nPhilosophen sitzen um einen runden Tisch. Zwischen jedem liegteinBesteckteil. Jeder ben¨otigt zwei, um essen zu k¨onnen. Wie sollten sie sich organisieren?

Ansatz Jeder greift zuerst nach dem rechten Besteckteil, dann nach dem Linken. Hat er beide, nimmt er einen Bissen, legt beide Teile wieder ab und wartet eine zuf¨allige Zeit bevor er von vorne beginnt. Hat er nur ein Besteckteil, wartet er mit diesem in der Hand solange, bis das Andere verf¨ugbar wird.

/vol/tdpe/share/material/session13/examples/thread/dining/

Finde das Problem und implementiere eine bessere L¨osung!

(9)

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Aufgabe: Zugriff auf Datenstruktur synchronisieren

Problem

Ring-Buffer, zirkul¨ar Schreiben und Lesen M¨ogliche Probleme:

Datenverlust (Producer zu schnell) Mehrfaches Lesen (Consumer zu schnell)

Ringbuffer

Read Write

Aufgabe

1 Definiere Bedingungen f¨ur Schreib-/Leseposition

2 Implementiere die n¨otigen Synchronisationsmechanismen

Siehe/vol/tdpe/share/material/session13/examples/thread/race/

(10)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1) Request/Response-Schema einheitliches

Nachrichtenformat

Anfrage

Befehl, Request-URI, Protokoll

Header optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1

Host: www.techfak.uni-bielefeld.de Content-Length: 12

Hello World!

(11)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1) Request/Response-Schema einheitliches

Nachrichtenformat

Anfrage

Befehl, Request-URI, Protokoll

Header optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1

Host: www.techfak.uni-bielefeld.de Content-Length: 12

Hello World!

(12)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1) Request/Response-Schema einheitliches

Nachrichtenformat

Anfrage

Befehl, Request-URI, Protokoll

Header optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1

Host: www.techfak.uni-bielefeld.de Content-Length: 12

Hello World!

(13)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1) Request/Response-Schema einheitliches

Nachrichtenformat

Anfrage

Befehl, Request-URI, Protokoll

Header optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1

Host: www.techfak.uni-bielefeld.de Content-Length: 12

Hello World!

(14)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1) Request/Response-Schema einheitliches

Nachrichtenformat

Anfrage

Befehl, Request-URI, Protokoll

Header optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1

Host: www.techfak.uni-bielefeld.de Content-Length: 12

Hello World!

(15)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Befehle und Ergebnisse

Wichtige Befehle:

GET ohne Seiteneffekte, idempotent

POST Seiteneffekte erlaubt, mit Request-Body HEAD wie GET, liefert nur Header

HTTP-Status: Numerischer Code + Nachricht 2xx OK, Inhalt folgt (z.B. 200 OK)

3xx Inhalt woanders (siehe Location-Header) 4xx Client-Fehler (z.B. 404 No resource at URL) 5xx Server-Fehler (z.B. 500 Internal Server

Error)

(16)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(17)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(18)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(19)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(20)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(21)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(22)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(23)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(24)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad Rest ist optional

Leerzeichen und viele Andere: encoden!

java.net.URI

Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr¨ankt ab 255 Zeichen Vorsicht

Siehe auchRFC 1783: Uniform Resource Locators

(25)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Form-Encoding

”Verpackung“ f¨ur Argumentliste

Ein Name kann mehrmals mit unterschiedlichen Werten vorkommen!

Name und Wert durch =getrennt Parameter durch&verkettet

Verwendet URL-Encoding vor dem Verketten

java.net.URLEncoder MIME-Typ, f¨ur POST:

application/x-www-form-urlencoded

(26)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Beispiel: URL-Retrieval

Beispielstand

Gibt URL, Response-Header und 10 Zeilen Inhalt aus.

Ort /vol/tdpe/share/material/session13/examples/

Aufruf java network.GetURL <url>

Ubung¨

Aufgabe Erg¨anze Programm um ¨Ubergabe von Parametern!

Aufruf java network.GetURL <url> name=value n2=v2 ...

Optional Verwende HEAD als Request-Methode!

(27)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Wiederholung: TCP

TCP: Transmission Control Protocol Stellt Punkt-zu-Punkt Verbindung her

Eine Seite wartet auf Verbindungen, die andere initiiert sie.

Zuverl¨assige Paketzustellung in der richtigen Reihenfolge Fehlerbehandlung nur bis Timeout!

Unabh¨angige Kan¨ale in beide Richtungen

Endpunkte

IP-Adresseund Port

Aufl¨osung Name in IP durch Domain Name Service (DNS) Ports unter 1024 sind reserviert, z.B. 80 f¨ur HTTP

(Quell-Host:QPort, Ziel-Host:ZPort) eindeutig

(28)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Verbindungen aufbauen

Siehe java.net.Socket

insbesondere connect,getInputStream,getOutputStream Streams blockierenwenn keine Daten (lesen) bzw. Buffer voll (Senden)

Buffered*-Streams verwenden, um Betriebssysteminteraktion zu minimieren

(29)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Verbindungen annehmen

1 IP-Adresse und Port festlegen

Default: Alle verf¨ugbaren Adressen, beliebiger freier Port

2 ServerSocket erzeugen

3 Auf Verbindungen warten (accept)

4 Datenaustausch ¨uber erzeugten Socket

(30)

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

EchoServer & Client

/vol/tdpe/share/material/session13/examples/network/EchoServer.java

Stand

Server nimmt Verbindungen auf freiem Port an und

”echoed“

Aufruf java network.EchoServer Ausgabe IP und Port des Sockets

Test pertelnetauf angegebenen Port Ctrl-] quitbeendet telnet

Hausaufgabe

Erg¨anze den Server um Threading, so dass er mehrere Clients gleichzeitig verarbeiten kann!

Schreibe einen Echo-Client der von der Standardeingabe liest!

Client beenden mitCtrl-D.

Referenzen

ÄHNLICHE DOKUMENTE

Es gilt die folgende Tabelle, wobei im Schnittpunkt der mit X markierten Zeile und der mit Y markierten Spalte ein Z steht, falls L(Z ) = ESpl(L(X ), L(Y )) gilt. F IN REG CF CS RE F

•  HTTP [RFC 2068]: The Hypertext Transfer Protocol is used for communication between web browser and web server. •  FTP [RFC 959]: The File Transfer Protocol allows directories on

•  HTTP [RFC 2068]: The Hypertext Transfer Protocol is used for communication between web browser and web server. •  FTP [RFC 959]: The File Transfer Protocol allows directories on

Wenn die Wechselwirkungen zwischen den Molek¨ ulen der fl¨ uchtigeren Komponente und denen des Gemischs (bzw. denen der einen anderen Komponen- te) st¨ arker sind, als

(Danke an das Palmer-Tutorium f¨ur diesen Hinweis.) In diesem Fall f¨uhrt man eine analoge Rechnung mit der Kurve ~r(Φ) durch, d.h. Also liegt die Extremale auch in diesem Fall

operations sign extension sizeof operator sizmem function sprintf function sscanf function stack stack location stack overflow SP stack pointer stack size standard error standard

[r]

Acronyms RDM Research Data Management PID Persistent Identifier URL Uniform Resource Locator URI Uniform Resource Identifier URN Uniform Resource Name NDN Named Data Networking