Techniken der Projektentwicklung



Ähnliche Dokumente
Transmission Control Protocol (TCP)

Themen. Anwendungsschicht DNS HTTP. Stefan Szalowski Rechnernetze Anwendungsschicht

Web Grundlagen zum Spidering

Proseminar: Website-Management-Systeme

Motivation. Inhalt. URI-Schemata (1) URI-Schemata (2)

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

Gefahren aus dem Internet 1 Grundwissen April 2010

Programmieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Timer. Sockets.

STARFACE SugarCRM Connector

Online-Publishing mit HTML und CSS für Einsteigerinnen

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

Client/Server-Systeme

TCP/UDP. Transport Layer

Powermanager Server- Client- Installation

FileMaker Go 13 ohne Connects

3. Stored Procedures und PL/SQL

Backup der Progress Datenbank

Artikel Schnittstelle über CSV

Anwendungsprotokolle: HTTP, POP, SMTP

Netzwerk. Um den Hostnamen angezeigt zu bekommen $ hostname $ hostname -f Um den Hostnamen zu ändern $ hostname <neuerhostname>

EDI Connect goes BusinessContact V2.1

Programmierkurs Java

Monitore. Klicken bearbeiten

Root-Server für anspruchsvolle Lösungen

How-to: Webserver NAT. Securepoint Security System Version 2007nx

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Man liest sich: POP3/IMAP

Wiederholung: Beginn

Guide DynDNS und Portforwarding

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Lokale Installation von DotNetNuke 4 ohne IIS

DNS-325/-320 und FXP

Anbindung des eibport an das Internet

IMAP und POP. Internet Protokolle WS 12/13 Niklas Teich Seite 1

MC-Hx 006. Einbindung des MC-Hx Modul als MODBus TCP Slave. MB DataTec GmbH. Stand:

Client-Server mit Socket und API von Berkeley

Konfiguration der NSV Tools ( Entpacken Sie die heruntergeladene Datei mittels WINRar oder ähnlichen Programmen.

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

15 Transportschicht (Schicht 4)

Dokumentation zum Spielserver der Software Challenge

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Bedienungsanleitung. 1. Eine direkte (1 1) Verbindung muss mit einem gekreuzten (Crossover) Netzwerkkabel hergestellt werden.

Kontrollfragen: Internet

Logging, Threaded Server

1 Lizenzkey Wo finde ich den Lizenzkey? Lizenzkey hochladen Nameserver einrichten Domains einrichten 7

PHP-Schwachstellen und deren Ausnutzung

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Konfiguration eines DNS-Servers

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Gesicherte Prozeduren

KN Das Internet

Multicast Security Group Key Management Architecture (MSEC GKMArch)

So die eigene WEB-Seite von Pinterest verifizieren lassen!

Ihr Benutzerhandbuch SAMSUNG SGH-V200

Technische Grundlagen von Internetzugängen

FastViewer Remote Edition 2.X

BitDefender Client Security Kurzanleitung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Session Management und Cookies

4D Server v12 64-bit Version BETA VERSION

Verteilte Systeme CS5001

FTP Server unter Windows XP einrichten

Übungen zu C++ Kapitel 1

Verwendung des IDS Backup Systems unter Windows 2000

Aufgabe 12.1b: Mobilfunknetzwerke

Einführung in IP, ARP, Routing. Wap WS02/03 Ploner, Zaunbauer

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Java Webentwicklung (mit JSP)

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Wenn keine Verbindung zwischen den Computern besteht, dann bist du offline.

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Prozessarchitektur einer Oracle-Instanz

Kommunikations-Parameter

Adressen der BA Leipzig

Collax VPN. Howto. Vorraussetzungen Collax Security Gateway Collax Business Server Collax Platform Server inkl. Collax Modul Gatekeeper

Grundlagen verteilter Systeme

Grundlagen von Python

Arbeitsblätter auf die Schülercomputer verteilen, öffnen und wieder einsammeln

DCS-3110 EVENT SETUP

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Lizenzen auschecken. Was ist zu tun?

Seite Out-Of-Band-Authentifizierung (OOBA) 8.1 Einleitung

Linux 08. Linux WS 04/05 by DNS - named: in /etc/named.conf. DNS Top-Level-DNS

Wie macht man einen Web- oder FTP-Server im lokalen Netzwerk für das Internet sichtbar?

Step by Step Webserver unter Windows Server von Christian Bartl

DNS Server einrichten unter Debian Linux. DHCP Server einrichten unter Debian Linux. Querschnittsaufgaben.

Snippets - das Erstellen von "Code- Fragmenten" - 1

OAuth Ein offener Standard für die sichere Autentifizierung in APIs

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Transkript:

Themen Threading Netzwerk Techniken der Projektentwicklung Threading & Netzwerkprogrammierung Ingo Lütkebohle Termin 13 Ingo Lütkebohle Techniken der Projektentwicklung 1

Themen heute Themen Threading Netzwerk Kurze Wiederholung von und Praxis-Beispiele zu: Threading Synchronisation zwischen Threads HTTP Verwendung von HTTP und URLs Sockets Netzwerkkommunikation mit TCP-Sockets Ingo Lütkebohle Techniken der Projektentwicklung 2

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Motivation: Threading Anwendungsfälle für unabhängige Abläufe mit geteilten Daten. GUIs Benutzerinteraktion während zeitraubender Hintergrundaktivitäten Server Ein Netzwerk-Server, mehrere Clients gleichzeitig Performance Verteilung von Berechnungen über mehrere CPUs (wenn vorhanden) Ingo Lütkebohle Techniken der Projektentwicklung 3

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Threads erzeugen Thread Unabhängiger Ausführungskontext Runnable Das, was ausgeführt wird. 1 In eigener Klasse Runnable implementieren 2 Thread erzeugen, Instanz der Klasse aus (1) übergeben 3 Thread starten http://java.sun.com/docs/books/tutorial/essential/threads/ Ingo Lütkebohle Techniken der Projektentwicklung 4

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Komplikationen Gleichzeitige Verwendung von Datenstrukturen aus mehreren Threads kann zu Konflikten führen, sog. Race Conditions Synchronisation notwendig Synchronisation beinhaltet warten fehlerhafte Synchronisation sog. Deadlock Gleichzeitige Ausführung auf einer CPU nur angenähert, Scheduler unterbricht nur an bestimmten Punkten (z.b. IO) Thread.yield() Ingo Lütkebohle Techniken der Projektentwicklung 5

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Race Conditions Textproblem Zwischen zwei atomaren Operationen können andere Threads Daten ändern. Ein Trivialbeispiel: Thread 1 if(val < 0) { int exp = 2 val ;... } Thread 2 if(val < 0) { val = abs(val);... } Was passiert in der Zeit zwischen Test und Verwendung der Variable? Ingo Lütkebohle Techniken der Projektentwicklung 6

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Einfache Synchronisation Critical Section nur ein Thread kann gleichzeitig in der critical section sein In Java: synchronized objektbasierte critical sections Pro Instanz kann nur ein Thread in irgendeiner critical section dieser Instanz sein wait/notify wait() hält an, bis notify() aufgerufen wird muss in critical section ausgeführt werden Ingo Lütkebohle Techniken der Projektentwicklung 7

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Dining Philosophers Situation n Philosophen sitzen um einen runden Tisch. Zwischen jedem liegt ein Besteckteil. Jeder benötigt zwei, um essen zu können. 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ällige Zeit bevor er von vorne beginnt. Hat er nur ein Besteckteil, wartet er mit diesem in der Hand solange, bis das Andere verfügbar wird. /vol/tdpe/share/material/session13/examples/thread/dining/ Finde das Problem und implementiere eine bessere Lösung! Ingo Lütkebohle Techniken der Projektentwicklung 8

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe Aufgabe: Zugriff auf Datenstruktur synchronisieren Problem Ring-Buffer, zirkulär Schreiben und Lesen Mögliche Probleme: Datenverlust (Producer zu schnell) Mehrfaches Lesen (Consumer zu schnell) Ringbuffer Write Read Aufgabe 1 Definiere Bedingungen für Schreib-/Leseposition 2 Implementiere die nötigen Synchronisationsmechanismen Siehe /vol/tdpe/share/material/session13/examples/thread/race/ Ingo Lütkebohle Techniken der Projektentwicklung 9

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe HyperText Transfer Protocol Aufbau Details RFC 2616 (v1.1) Request/Response-Schema einheitliches Nachrichtenformat Beispielrequest Anfrage POST /foo%20?n=v HTTP/1.1 Host: www.techfak.uni-bielefeld.de Content-Length: 12 Hello World! Befehl, Request-URI, Protokoll Header optional Body Ingo Lütkebohle Techniken der Projektentwicklung 10

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe HyperText Transfer Protocol Aufbau Details RFC 2616 (v1.1) Request/Response-Schema einheitliches Nachrichtenformat Beispielrequest Anfrage POST /foo%20?n=v HTTP/1.1 Host: www.techfak.uni-bielefeld.de Content-Length: 12 Hello World! Befehl, Request-URI, Protokoll Header optional Body Ingo Lütkebohle Techniken der Projektentwicklung 10

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe HyperText Transfer Protocol Aufbau Details RFC 2616 (v1.1) Request/Response-Schema einheitliches Nachrichtenformat Beispielrequest Anfrage POST /foo%20?n=v HTTP/1.1 Host: www.techfak.uni-bielefeld.de Content-Length: 12 Hello World! Befehl, Request-URI, Protokoll Header optional Body Ingo Lütkebohle Techniken der Projektentwicklung 10

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe HyperText Transfer Protocol Aufbau Details RFC 2616 (v1.1) Request/Response-Schema einheitliches Nachrichtenformat Beispielrequest Anfrage POST /foo%20?n=v HTTP/1.1 Host: www.techfak.uni-bielefeld.de Content-Length: 12 Hello World! Befehl, Request-URI, Protokoll Header optional Body Ingo Lütkebohle Techniken der Projektentwicklung 10

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe HyperText Transfer Protocol Aufbau Details RFC 2616 (v1.1) Request/Response-Schema einheitliches Nachrichtenformat Beispielrequest Anfrage POST /foo%20?n=v HTTP/1.1 Host: www.techfak.uni-bielefeld.de Content-Length: 12 Hello World! Befehl, Request-URI, Protokoll Header optional Body Ingo Lütkebohle Techniken der Projektentwicklung 10

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) Ingo Lütkebohle Techniken der Projektentwicklung 11

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

URI/URL Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe 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änge der URI prinzipiell unbeschränkt ab 255 Zeichen Vorsicht Siehe auch RFC 1783: Uniform Resource Locators Ingo Lütkebohle Techniken der Projektentwicklung 12

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe Form-Encoding Verpackung für 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ür POST: application/x-www-form-urlencoded Ingo Lütkebohle Techniken der Projektentwicklung 13

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> Übung Aufgabe Ergänze Programm um Übergabe von Parametern! Aufruf java network.geturl <url> name=value n2=v2... Optional Verwende HEAD als Request-Methode! Ingo Lütkebohle Techniken der Projektentwicklung 14

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ässige Paketzustellung in der richtigen Reihenfolge Fehlerbehandlung nur bis Timeout! Unabhängige Kanäle in beide Richtungen Endpunkte IP-Adresse und Port Auflösung Name in IP durch Domain Name Service (DNS) Ports unter 1024 sind reserviert, z.b. 80 für HTTP (Quell-Host:QPort, Ziel-Host:ZPort) eindeutig Ingo Lütkebohle Techniken der Projektentwicklung 15

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe Verbindungen aufbauen Siehe java.net.socket insbesondere connect, getinputstream, getoutputstream Streams blockieren wenn keine Daten (lesen) bzw. Buffer voll (Senden) Buffered*-Streams verwenden, um Betriebssysteminteraktion zu minimieren Ingo Lütkebohle Techniken der Projektentwicklung 16

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe Verbindungen annehmen 1 IP-Adresse und Port festlegen Default: Alle verfügbaren Adressen, beliebiger freier Port 2 ServerSocket erzeugen 3 Auf Verbindungen warten (accept) 4 Datenaustausch über erzeugten Socket Ingo Lütkebohle Techniken der Projektentwicklung 17

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 Hausaufgabe Test per telnet auf angegebenen Port Ctrl-] quit beendet telnet Ergänze den Server um Threading, so dass er mehrere Clients gleichzeitig verarbeiten kann! Schreibe einen Echo-Client der von der Standardeingabe liest! Client beenden mit Ctrl-D. Ingo Lütkebohle Techniken der Projektentwicklung 18