Netzwerkprogrammierung & Threads

Ähnliche Dokumente
Netzwerkprogrammierung & Threads

Netzwerkprogrammierung & Threads

Network Communication. Dr. Jürgen Eckerle WS 06/07

Verteilte Systeme - Java Networking (Sockets) -

Verteilte Systeme - Java Networking (Sockets) 2 -

Verbindungen zu mehreren Clients. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 23: Netzwerkprogrammierung/ Kommunikation 2

Referat: Netzwerkprogrammierung in Java

Beispiel Time Client/Server

Softwarepraktikum Sommersemester 2006

Java und Netzwerkkommunikation

TCP und UDP Sockets in Java

Programmiermethodik. Übung 10

Transmission Control Protocol (TCP)

Programmierung mit Threads in Java

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom Dr. Sebastian Iwanowski FH Wedel

Advanced Network Programming

2 Verbindungslose Kommunikation mit UDP

Kommunikation und Synchronisation von Prozessen

Client-Server TCP/IP - Kodierung

4. Thread- und Netzwerk- Programmierung

Programmieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Sockets.

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Dr. Monika Meiler. Inhalt

Socket-Programmierung unter Java


Parallele Prozesse. Prozeß wartet

Programmiermethodik. Übung 13

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

5. Threads, Serverprozesse und Benachrichtigungen

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Networking mit Sockets in Java

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

1. Netzwerkprogrammierung für mobile Geräte

Beispiel senden

Ausnahmebehandlung in Java

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Java I Vorlesung Nebenläufigkeit

Softwarepraktikum Sommersemester 2007

Netzwerk-Programmierung. Netzwerke.

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

Netzwerkprogrammierung

Nebenläufigkeit mit Java

Nebenläufigkeit mit Java

Vorlesung Informatik II

1. Netzwerkprogrammierung für mobile Geräte

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Dr. Monika Meiler. Inhalt

Client-Server TCP/IP - Kodierung

Dr. Monika Meiler. Inhalt

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird?

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

Client-Server TCP/IP - Kodierung

Techniken der Projektentwicklung

NETZWERKPROGRAMMIERUNG IN JAVA. Sun Microsystems hat eine generelle Aufteilung dieser Aufgabe in die zwei Teile vorgenommen:

Verteilte Systeme CS5001

Networking. Motivation und Grundlagen Klasse Socket SMTP-Protokoll Exceptions. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Remote Method Invocation

E.1 Object Request Brokers

Java I/O, Serialisierung und Netzwerkprogrammierung

Java-Programmierung. Remote Method Invocation - RMI

Dateien. DVG Dateien 1

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Einführung Verteilte Systeme - Java Threads I -

Was ist ein Netzwerk? Informatik B - Objektorientierte Programmierung in Java. Vorlesung 22: Netzwerkprogrammierung/ Kommunikation 1.

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007

31 Network Programming

Kapitel 4: Design von Client/Server-Software. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

Distinguished Lectures Series im SS04. And now YOU ARE HERE. Verwendung der Oberklasse Thread

Nebenläufige und verteilte Programme CS2301

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Synchronisation in Java. Invisible Web

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

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

Remote Method Invocation

Threading. Arthur Zaczek. Aug 2015

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Praktikum aus Softwareentwicklung 2, Stunde 5

Überblick. Verteilte Systeme - 4. Übung. VS-Übung. Dynamische Proxies Stubs & Skeletons Dynamische Proxies als Stubs. Tobias Distler, Michael Gernoth

4. Servlets Ein kleiner Einstieg

VS3 Slide 1. Verteilte Systeme. Vorlesung 3 vom Dr. Sebastian Iwanowski FH Wedel

Instrumentierung und Dekodierung

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException

Beispiel für überladene Methode

Einführung. Internet vs. WWW

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Nebenläufigkeit mit Java

Kommentare, Client-Server, Protokolle

Informatik 12 Kapitel 2 - Kommunikation und Synchronisation von Prozessen

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Netzwerke, Kapitel 3.1

Prozesszustände (1a)

Klausur Rechnernetze

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Mobile und Verteilte Datenbanken

Rechnernetze Übung 11

Informatik II. Semesterklausur

Transkript:

& Praktikum aus 1

& URL, URLConnection, UDP, TCP Parallele Abläufe, Synchronisation, 2

Grundlagen (1/4) Kommunikation zwischen verteilten Programmen Host Computer Java Virtuelle Maschine Host Computer Java Java Virtuelle Virtuelle Maschine Maschine JVM, Web Server, Datenbank, Ftp.. Netzwerk Adapter Netzwerk Adapter Netzwerk 3

Grundlagen (2/4) OSI 7 Schichten 7: Application 6: Presentation 5: Session 4: Transport 3: Network 2: Data Link 1: Physical Übertragung OSI 7 Schichten Application Presentation Session Transport Network Data Link Physical http://de.wikipedia.org/wiki/osi-modell Netzwerk 4

Grundlagen (3/4) ISO OSI, IP und Java OSI 7 Schichten Application Presentation Session Transport Network Data Link Physical Interface zum Netzwerk Adapter Internet Client oder Server: HTTP, FTP... TCP, UDP Internet Protocol Ethernet, Token Ring, FDDI,.. java.net URL Streams, Reader, Writer Socket InetAddress 5

IP, TCP, UDP Internet Protocol (IP) Routing der IP-Pakete (versehen mit Empfänger, Sender) Transport Control Protocol (TCP) Verbindung: Aufbau eines Kommunikationskanal Stückelt Nachricht in mehrere durchnummerierte Pakete Überprüft ob Paket Ziel erreicht hat, ansonsten Wiederholung Empfänger setzt Pakete in richtiger Reihenfolge wieder zusammen Uniform Datagram Protocol (UDP) Keine Verbindung - zustandslos Pakete werden durch Anwendung gesendet Paket kann verloren gehen, keine Kontrolle 6

Grundlagen (4/4) http://www.ethereal.com/ OSI 7 Schichten Application Presentation Session Transport Network Data Link Physical 7

HTTP und URLs Hypertext Transfer Protocol (HTTP/1.1) Uniform Resource Locator protocol :// [user@] host [:port] /filepath [ref] RFC2396 http://www.rfc-editor.org/ http://www.w3.org/addressing/url/url-spec.html Beispiele: http://www.somewhere.com:80/index.html https://meine.bank.com ftp://www.nowhere.net file://d:/tmp/sample.html mailto://office@company.com 8

Verwendung von URLs Ein Objekt der Klasse java.net.url repräsentiert eine Resource im Internet try { URL u = new URL("http://java.sun.com/index.html"); catch(malformedurlexception e) { Parsen: u.getprotocol(); u.gethost(); //... (File, Port, Ref) Direktes Lesen von einer URL: InputStream in = u.openstream(); 9

URLConnection Verbindung wird durch ein URLConnection Objekt repräsentiert und bei dessen Erzeugung aufgebaut. URL u = new URL( http://... ); URLConnection uc = u.openconnection(); Datenaustausch erfolgt über Streams der InputStream ui = uc.getinputstream(); OutputStream uo = uc.getoutputstream(); HttpURLConnection HttpURLConnection httpuc = (HttpURLConnection)uc; httpuc.getrequestmethod(); httpuc.getresponsemessage(); 10

Beispiel: "mailto:" import java.io.*; import java.net.*;... System.setProperty("mail.host", smtp.tiscover.com"); URL u = new URL("mailto:godot@world.net"); URLConnection conn = u.openconnection(); PrintWriter out = new PrintWriter( new OutputStreamWriter(conn.getOutputStream())); out.println("subject: Test"); out.println(); out.println("hello World!"); out.close();... 11

Sockets Sockets sind die Schnittstelle zwischen Anwendung und Netzwerkverbindung Host:Port zur Identifizierung der Anwendungen Host 1 169.254.235.246 Http-Client Host 2 169.254.235.247 Http-Server 9951 UDP: Pakete 80 TCP: Stream Die "Server"-Anwendung wartet auf einem vereinbarten Port auf Verbindungsaufnahmen durch Client-Anwendungen 12

TCP verbindungsorientiert Kommunikation erfolgt bidirektional über Sockets Socket := (Host, Portnummer) Implementierung des Datenaustausches mit Streams Client stellt Verbindung her durch Instanziierung eines Socket Objektes Server ist implementiert durch ServerSocket und wartet auf einer bestimmten Portnummer auf Anfragen: public Socket accept(); Verbindungsabbruch durch Schließen des Sockets 13

TCP Verbindungsaufbau Client Socket s = new Socket(<Host>,<Port>); InputStream si = s.getinputstream(); OutputStream so = s.getoutputstream(); Server (gestartet auf <Host>) ServerSocket ss = new ServerSocket(<Port>); Socket s = ss.accept(); // blockierend InputStream from_so = s.getinputstream(); OutputStream to_si = s.getoutputstream(); Das Socket Objekt repräsentiert die Verbindung 14

UDP paketorientiert Datenaustausch basiert auf Paketen (Datagramme) DatagramPacket repräsentiert Datenpaket Paket zum Senden: DatagramPacket(byte[] buf, int length, <Host>, <Port>) Paket zum Empfangen: DatagramPacket(byte[] b, int len) DatagramSocket zum Senden und Empfangen public void send(datagrampacket d); public void receive(datagrampacket d); 15

UDP Senden/Empfangen Initialisierung DatagramSocket socket = new DatagramSocket(9998); Request schicken InetAddress address = InetAddress.getByName("host"); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 8889); socket.send(packet); Response empfangen packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String received = new String(packet.getData()); 16

& URL, URLConnection, UDP, TCP Parallele Abläufe, Synchronisation, 17

Eigenschaften "Heavy-weight" Prozess Adressraum Ausführungszustand Programmzähler, Ausführungs-Stack eventuell mehrere "Light-weight" Prozess (Thread) teilt sich den Adressraum mit seinem Parent und anderen jeder Thread ist ein eigener, sequentieller Kontrollfluss mit einem eigenen Programmzähler, Ausführungs-Stack und Zustand User-Thread Daemon-Thread: terminieren automatisch, wenn der letzte nicht- Daemon Thread beendet wird Paralleler Ablauf des Parent-Prozesses und aller 18

Implementierung von Ableiten von der Klasse java.lang.thread und Überschreiben der Methode run Implementierung des Interfaces Runnable und Übergabe des Objekts an ein Thread Objekt im Konstruktor class Clock implements Runnable { public void run() {... Clock clk = new Clock(); Thread clkthread = new Thread(clk).start(); 19

Beispiel: SimpleThread java.lang.thread void run() void start() Leer- Implement ierung VM erzeugt OS-Thread und ruft run() auf SimpleThread void run() {... Hauptprogramm von SimpleThread public class ThreeTest { public static void main (String[] args) { new SimpleThread("Jamaica").start(); new SimpleThread("Fiji").start(); new SimpleThread( Bora").start(); 20

Lebenszyklus 21

SimpleThread Sequenzdiagramm 22

Thread, Runnable und Object 23

Beispiel: Time Server public class TimeServer { public static void main (String args[]) throws IOException { ServerSocket server = new ServerSocket(1234); while (true) { System.out.println("Waiting for client..."); Socket client = server.accept(); System.out.println("Client from" + client.getinetaddress() + "connected."); TimeHandler handler = new TimeHandler(client); new Thread(handler).start(); 24

Beispiel: Time Handler public class TimeHandler implements Runnable { private Socket client; public TimeHandler(Socket _client) { client = _client; public void run () { try { DataOutputStream out = new DataOutputStream( new BufferedOutputStream(client.getOutputStream())); Date date = new Date(); System.out.println(date.toString()); out.writeutf(date.tostring()); out.flush(); client.close(); catch (IOException e) { System.err.println(e); 25

Prioritäten Jeder Thread hat bestimmte Priorität public final static int MAX_PRIORITY = 10; public final static int NORM_PRIORITY = 5; public final static int MIN_PRIORITY = 1; Priorität kann selbst definiert werden: public final void setpriority(int np); public final int getpriority(); Thread mit höchster Priorität läuft bis zum Thread- Ende Scheduling nur für mit gleicher Priorität 26

Schlüsselwörter Variablen: volatile Synchronisation (1/2) Codeblöcke und Methoden: synchronized Blöcke können auch verschachtelt sein Jedes Objekt hat einen Monitor (realisiert Lock) Eintritt in einen synchronized Block des Objekts nur möglich, wenn Zählerstand des Monitors auf 0, bei Eintritt wird Zählerstand erhöht. Nicht-synchronized Methoden können immer ausgeführt werden. synchronized wird nicht vererbt 27

<Object>.wait() Synchronisation (2/2) ein Thread, der einen Lock auf <Object> hat, wird unterbrochen und kommt in eine Warteschlange Monitor wird freigegeben (Zähler auf 0 gesetzt) <Object>.notify() oder notifyall() Ein Thread H (holder) gibt Zustandsänderung bekannt Ein Thread W (waiter) kommt aus der Warteschlange und wartet, bis H Monitor freigibt durch: Beenden, bzw. Verlassen des synchronized Blocks Geht selbst in Warteposition mit wait() Wenn W Monitor erhält, wird er aktiviert 28

Producer / Consumer Beispiel (1/2) Consumer muss mit dem Lesen warten bis aktuelle Daten vorhanden sind Producer muss mit dem Schreiben warten, bis Consumer die aktuellen Daten abgeholt hat 29

Producer / Consumer Beispiel (2/2) class Producer extends Thread { Data dat; Producer(Data dat) { this.dat = dat; public void run() { while (1==1) { dat.put(i);... class Consumer extends Thread { Data dat; Consumer(Data dat) { this.dat = dat; public void run() { while (1==1) { System.out.println(dat.get());... 30

Implementierungsdetails (1/2) Schreiben auf Data public synchronized void put(int i) { while (newvalue) { try { wait(); catch(interruptedexception e) { val = i; newvalue = true; notifyall(); 31

Implementierungsdetails (2/2) Lesen von Data public synchronized int get() { while (!newvalue) { try { wait(); catch(interruptedexception e) { newvalue = false; notifyall(); return val; 32

Gruppen Gruppierung von Gemeinsame Eigenschaften, gemeinsame Manipulation Jeder Thread gehört zu einer Thread Gruppe public Thread(ThreadGroup group,string name) public final ThreadGroup getthreadgroup() Klasse ThreadGroup public ThreadGroup(String name) public ThreadGroup(ThreadGroup parent,string name) public static int enumerate(thread[] tarray) public void destroy() Thread Gruppen können geschachtelt sein public ThreadGroup getparent() 33

Ende der 3. Übung 34