4. Thread- und Netzwerk- Programmierung



Ähnliche Dokumente
Transmission Control Protocol (TCP)

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

Programmiermethodik. Übung 13

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

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

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

Referat: Netzwerkprogrammierung in Java

Gefahren aus dem Internet 1 Grundwissen April 2010

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Anbindung des eibport an das Internet

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

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

Übung: Verwendung von Java-Threads

Innere Klassen in Java

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Kontrollfragen: Internet

ANYWHERE Zugriff von externen Arbeitsplätzen

Guide DynDNS und Portforwarding

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

HTBVIEWER INBETRIEBNAHME

Technische Grundlagen von Internetzugängen

Einführung in die Netzwerktechnik

Online-Publishing mit HTML und CSS für Einsteigerinnen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Java: Vererbung. Teil 3: super()

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Netzwerkeinstellungen unter Mac OS X

Step by Step Webserver unter Windows Server von Christian Bartl

Anleitung Grundsetup C3 Mail & SMS Gateway V

2A Basistechniken: Weitere Aufgaben

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

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

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

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

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Kurzanleitung OOVS. Reseller Interface. Allgemein

Konfigurationsanleitung Network Address Translation (NAT) Funkwerk. Seite Copyright Stefan Dahler Oktober 2008 Version 1.

Client-Server mit Socket und API von Berkeley

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

WLAN Konfiguration. Michael Bukreus Seite 1

Local Control Network Technische Dokumentation

Bernd Blümel. Verschlüsselung. Prof. Dr. Blümel

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

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

Anleitung zur Nutzung des SharePort Utility

Einführung in die Programmierung

Javakurs zu Informatik I. Henning Heitkötter

NAS 224 Externer Zugang manuelle Konfiguration

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

Benutzerhinweise IGW/920-SK/92: Einsatz als VPN-Client

Networking. Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Step by Step VPN unter Windows Server von Christian Bartl

15 Transportschicht (Schicht 4)

Internet Security 2009W Protokoll Firewall

Einrichtung von VPN-Verbindungen unter Windows NT

Einrichtungsanleitung Router MX200

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Vorlesung SS 2001: Sicherheit in offenen Netzen

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

KN Das Internet

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

Kommunikations-Parameter

Programmieren in Java

Einführung in die Java- Programmierung

Einführung in die Programmierung Blockkurs Java

Zählen von Objekten einer bestimmten Klasse

Virtual Private Network

Objektorientierte Programmierung. Kapitel 12: Interfaces

ICS-Addin. Benutzerhandbuch. Version: 1.0

Übungen zu Softwaretechnik

Verteilte Systeme CS5001

Collax PPTP-VPN. Howto

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Programmieren I. Kapitel 15. Ein und Ausgabe

Powermanager Server- Client- Installation

EasyWk DAS Schwimmwettkampfprogramm

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Wie richten Sie Ihr Web Paket bei Netpage24 ein

ISA Server 2004 stellt verschiedene Netzwerkvorlagen zur Einrichtung einer sicheren Infrastruktur zur Verfügung:

Windows Server 2008 (R2): Anwendungsplattform

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Lizenzen auschecken. Was ist zu tun?

Der lokale und verteilte Fall

How-to: Mailrelay und Spam Filter. Securepoint Security System Version 2007nx

Firewalls für Lexware Info Service konfigurieren

Grundlagen der Theoretischen Informatik, SoSe 2008

Web Interface für Anwender

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Übungsblatt 3: Algorithmen in Java & Grammatiken

Man unterscheidet zwischen LAN (Local Area Network) und WAN (Wide Area Network), auch Internet genannt.

2.2 Prozesse in Java

Transkript:

4. Thread- und Netzwerk- Programmierung 4.1 Ziel dieses Kapitels 4.2 Prozeß versus Thread 4.3 Thread-Programmierung 4.4 TCP/IP Grundlagen 4.5 TCP Programmierung 3. TCP/IP und Threads 3-1

4.1 Ziel dieses Kapitels Die Entwicklung von Internet-Applikationen ist insbesondere in der Praxis von großer Bedeutung. Aus diesem Grund wurde für das Praktikum eine Problemstellung aus diesem Bereich gewählt. Die Parallelprogrammierung (Threads) ist für die Entwicklung größerer Java-Programme essentiell notwendig. In diesem Kapitel können Sie Basiskenntnisse - der parallelen Programmierung und - des Internet-Protokolls sowie deren praktische Umsetzung in Java erlernen. Der Schwerpunkt liegt auf der praktischen Umsetzung! 3. TCP/IP und Threads 3-2

4.2 Prozesse versus Threads Ein ablaufendes Programm wird auch als Prozeß bezeichnet. Definition Prozeß. Ein Prozeß besteht aus: Systemressourcen (Dateisystem, etc.), einem Adreßraum (Speicherbereich für Objekte, die mit new angelegt werden sowie statische Attribute und Objekte) und mindestens einem Thread (Anweisungssequenz) Bisher haben wir Programme entwickelt, die Anweisungen sequentiell ausgeführt haben (also nur einen Thread hatten). In einigen Fällen kann es jedoch notwendig/nützlich sein, Anweisungssequenzen parallel auszuführen. Java unterstützt aus diesem Grund das Konzept des Multi-Threadings. 3. TCP/IP und Threads 3-3

Threads Definition Threads. Threads bestehen aus: einer Anweisungssequenz (Programmzähler) und einem Stackbereich (für automatische Variablen und Rücksprungadressen) Beispiel. 01 class MyClass { 02 static int j= 5; 03 static void main(string[] argv) { 04 Integer intobj= new Integer(j); 05 for (int i= 0; i < j; i++) 06 System.out.println( i = + i); 07 } 08 } 3. TCP/IP und Threads 3-4

4.3 Java Thread Programmierung (Teil 1) In Java werden Threads durch Objekte der Klasse Thread repräsentiert. class Thread { Thread(Runnable target, String name); static Thread currentthread(); static void static void sleep(long millis); yield(); void start(); void stop(); /* deprecated */ void run(); String getname() ; boolean isalive(); } 3. TCP/IP und Threads 3-5

Thread Zustandsdiagramm New Thread yield notify erzeugt aktivierbar start wait sleep nicht aktivierbar run beendet Ausnahme ausgeworfen terminiert 3. TCP/IP und Threads 3-6

Interface Runnable Threads können in eigenen Programmen durch Implementieren des Interfaces Runnable erzeugt werden: interface Runnable { } public void run(); 3. TCP/IP und Threads 3-7

Beispiel: RunnableZaehler 01 class RunnableZaehler implements Runnable { 02 public void run() { 03 for (int i= 0; i < 4; i++) { 04 System.out.println( 05 Thread.currentThread().getName() + 06 : + i); 07 try { 08 Thread.Sleep(1000); 09 } catch (InterruptedException e) { 10 System.err.println(e); 13 } } } 14 public static void main (String[] argv) { 15 Runnable z1= new RunnableZaehler(); 16 Runnable z2= new RunnableZaehler(); 17 Thread t1= new Thread(z1); 18 Thread t2= new Thread(z2); 19 t1.start(); 20 t2.start(); 22 } } 3. TCP/IP und Threads 3-8

Objektmodell t1 z1 z1 Thread-Objekt RunnableZaehler- Objekt 3. TCP/IP und Threads 3-9

4.4 Netzwerke, Client/Server-Programmierung (Teil 1) Internet-Protokoll (IP). Ziel des Internet-Protokolls ist die Bereitstellung der folgenden beiden Dienste: eindeutige Identifikation eines Rechners, Transport von Daten-Paketen von einem Rechner zu einem anderen Rechner. Jedes Datenpaket enthält einen Programmkopf mit der Adresse des Absenders und des Empfängers. Jedes Paket wird unabhängig von vorhergehenden Paketen vom Sender zum Empfänger geleitet. Größere Datenmengen müssen in Pakete zerlegt werden. 3. TCP/IP und Threads 3-10

Internet Protokoll (IP) IP sieht vor, daß jeder Rechner eine eindeutige Adresse zur Identifikation besitzt. Diese Adresse besteht aus einer 32-Bit Zahl. Beispiel: Der Web Server des Lehrstuhls hat die IP- Adresse Typischerweise wird die IP-Adresse durch vier 8-Bit Werte dargestellt, die durch Punkte getrennt sind. Beispiel: Lehrstuhl-Web Server Da solche Zahlen nur schwer zu merken sind, können Rechner auch durch einen Namen beschrieben werden. Beispiel: Lehrstuhl-Web Server ZZZLQIRUPDWLN LQIRUPDWLNXQL QLPDQ PDQQKHLP QKHLPGH Die Übersetzung des Namens in die 32-Bit Adresse wird durch sogenannte Domain-Name-Services (DNS) übernommen. 3. TCP/IP und Threads 3-11

Internet Protokoll (IP) Was leistet IP nicht? IP realisiert keinerlei Zuverlässigkeit; d.h. Pakete können - verloren gehen, - in falscher Reihenfolge ankommen oder - dupliziert werden. IP realisiert keine Ende-zu-Ende Kommunikation: - es ist nicht möglich Daten zwischen zwei Programmen auszutauschen. -Es können keine Programme auf entfernten Rechnern adressiert werden. Betriebssystem Netzwerk? 3DNHWYHUOXVWH? netscape 'XSOLNDWH Betriebssystem Web-Server 134.155.50.46 134.155.48.96 3. TCP/IP und Threads 3-12

Transmission Control Protokoll (TCP) TCP erweitert IP um die fehlende Funktionalität; d.h. es ermöglicht eine zuverlässige Ende-zu-Ende Kommunikation: Absicherung gegen Paketverluste, Korrektur der Paketreihenfolge und Entfernung der Duplikate. Weiterhin: Adressierung von Programmen auf entfernten Rechnern durch Port-Adressen Port-Nummern sind im Paketkopf von TCP- Paketen enthalten. Betriebssystem Netzwerk Betriebssystem Port 4242 3DNHWYHUOXVWH Port 80 netscape 'XSOLNDWH Web-Server 134.155.50.46 134.155.48.96 3. TCP/IP und Threads 3-13

Ende-zu-Ende Kommunikation Sender netscape ftp Daten 21 Daten 80 Empfänger Web-server ftp-server 3. TCP/IP und Threads 3-14

Netzwerke, Client/Server-Programmierung Wir wollen uns hier im wesentlichen auf die Entwicklung von Client/Server-Architekturen per TCP beschränken. Definition Server. Mit Server wird ein Programm bezeichnet, das bestimmte Dienste (über das Internet) anbietet. Definition Client. Mit Client wird ein Programm bezeichnet, das bestimmte Dienste bei einem Server (über das Internet) anfordert. Beispiele für Client/Server-Architekturen: WWW, FTP, Telnet 3. TCP/IP und Threads 3-15

Client/Server Architektur Clients können eine Verbindung zum Server beantragen, indem sie dessen Dienstzugangspunkt kontaktieren. Akzeptiert der Server die Verbindungsanfrage, wird eine Verbindung hergestellt. Über diese Verbindung können Dienste angefordert werden. Dies geschieht, indem zwischen Client und Server Daten ausgetauscht werden. Server Dienste SAP c 2 c 1 Client 1 Client neu Client 2 SAP = Dienstzugangspunkt (Service Access Point) c 1/2 = Verbindung zu Client 1 bzw. Client 2 3. TCP/IP und Threads 3-16

Dienstzugangspunkte Dienstzugangspunkte sind öffentlich bekannte Eingangstore (Ports) eines Rechners. Das Internet- Protokoll erlaubt die eindeutige Identifikation eines Rechners. Auf einem Rechner (Server) laufen oftmals mehrere Server-Programme gleichzeitig, die unterschiedliche Dienste zur Verfügung stellen (z.b. FTP-Server und HTTP-Server). Um ein solches Server-Programm eindeutig ansprechen zu können, stellt das Betriebssystem sogenannte Ports zur Verfügung. 3. TCP/IP und Threads 3-17

Dienstzugangspunkte Definition Port. Ports werden durch eine 16-Bit Zahl repräsentiert. Ein Server-Programm kann sich an einen Port binden und ist damit eindeutig ansprechbar. Prinzipiell kann ein Server-Programm einen beliebigen freien Port binden, bestimmte standardisierte Dienste wie z.b. HTTP haben fest zugeordnete Ports. Selbst entwickelte Programme sollten deshalb Port-Nummern größer 10000 wählen. Standardisierte Dienste (Auszug): Anwendung Port Anwendung Port Echo 7 Daytime 13 FTP 21 Telnet 23 SMTP 25 Finger 79 HTTP 80 POP 110 3. TCP/IP und Threads 3-18

4.5 Client/Server Programmierung in Java Das Paket java.net enthält Klassen für den Zugriff auf andere Rechner per Internet. Server. Server-Programme erzeugen zunächst einen Dienstzugangspunkt. Dieser wird durch Objekte der Klasse ServerSocket repräsentiert. Der Dienstzugangspunkt wird an einen Port des Rechners gebunden. Im Anschluß lauscht der Server auf eingehende Verbindungswünsche von Clients. Geht am Dienstzugangspunkt ein Verbindungswunsch ein, kann der Server diesen Wunsch akzeptieren. Damit ist eine Verbindung hergestellt. Die Verbindung wird durch Objekte der Klasse Socket repräsentiert. 3. TCP/IP und Threads 3-19

Client/Server-Programmierung Client. Client-Programme erzeugen eine Verbindung zum Dienstzugangspunkt des Servers. Diese Verbindung wird durch Objekte der Klasse Socket repräsentiert. Sowohl Client als auch Server können Daten an den Gegenpart verschicken (full duplex). Anmerkung. Der Begriff Socket stammt aus dem Bereich der Betriebssysteme. Hier stellen sie ebenfalls die (C-)Programmierschnittstelle zur TCP/IP Implementierung des jeweiligen Betriebssystems dar. 3. TCP/IP und Threads 3-20

TCP Zustandsdiagramm new ServerSocket(port) Server SAP erzeugt und gebunden ServerSocket.accept() Verbindung erzeugt Socket read/write Client Verbindung erzeugt Socket new Socket(server,port) 3. TCP/IP und Threads 3-21

Die Klassen Socket und ServerSocket class ServerSocket { ServerSocket(int port); Socket accept(); void close(); } class Socket { Socket(String host, int port); void close(); InputStream getinputstream(); OutputStream getoutputstream(); } (Auszug) 3. TCP/IP und Threads 3-22

TCP Client 01 class TCPIPClient { 02 TCPIPClient(String hostn, int port) { 03 try { 04 Socket sock= new Socket(hostn, port); 05 InputStream sockin= 06 sock.getinputstream(); 07 OutputStream sockout= 08 sock.getoutputstream(); 09 int invalue= sockin.read(); 10 int outval= 42; 11 sockout.write(outval); 12 sock.close(); 13 } catch (UnknownHostException eu) { 14... 15 } catch (IOException ioe) { 16... 17 } } 18... 19 } 3. TCP/IP und Threads 3-23

TCP Server 01 class DumpServer { 02 DumpServer(int port) { 03 try { 04 ServerSocket server= 05 new ServerSocket(port); 06 for (;;) { 07 Socket sock= server.accept(); 08 OutputStream sockout= 09 sock.getoutputstream(); 10 int outval= 42; 11 sockout.write(outval); 12 sock.close(); 13 } 14 } catch (IOException ioe) { 15... 16 } } 17... 18 } 3. TCP/IP und Threads 3-24

Komplexere Beispiele Unser Server hat den Nachteil, daß er jeweils immer nur einen Client bedienen kann. Dies liegt daran, daß nur ein Thread vorhanden ist. Typischerweise erzeugen sowohl Client als auch Server zu jedem Socket eigene Threads, die Daten auf diesen Socket schreiben bzw. Daten von diesem Socket lesen. Auf der Web-Seite des Lehrstuhls ist der Quellcode einiger Client/ Server-Applikationen abgelegt. 3. TCP/IP und Threads 3-25