Netzwerk - Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Klassen - Verkettete Liste -
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
A. A B A B D A B D H ; H ist fertig abgearbeitet.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
C Tutorium – Semaphoren –
Java News & Music Der Chat
Threads Richard Göbel.
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Fehler-Management.
Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann

Perl-Grundlagen Teile der Präsentation von A. Grupp,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) public Knoten einfuegenVor(Datenelement dNeu, Datenelement dVergleich){
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Anweisungen und Datentypen
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Parallel Matrix Multiplication
Vom Kontext zum Projekt V Carina Berning Sabrina Gursch Pierre Streicher Intelligente Dateisysteme.
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Einführung in PHP.
Einführung in PHP 5.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Lösung Hausaufgabe 4-1 #!perl -w $infile = "daten4-1.txt"; $count1 = $count2 = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count2 +=
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Ablauf von Daten- verarbeitungsprozessen Gliederung: ● Zeitliche Steuerung von Abläufen – Druckauftragsverarbeitung – scheinbare Gleichzeitigkeit von Prozessen.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Programmieren mit sockets Alexander Sczyrba
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Netzwerke Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Prozesse Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung I/O Multiplexing Alexander Sczyrba
Netzwerk - Programmierung
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Concurrent Clients Alexander Sczyrba
Netzwerke - Protokolle
Der Chatclient.
Netzwerk - Programmierung
Web-Interface for Multi-FPGA Board Pamette
Zwei Denkansätze zur Klasse Schlange
Der kritische Abschnitt
Netzwerk - Programmierung
Whoami. whoami Tobias FROGGS Slangs sub languages.
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Kleines 1x1 ABCD Aufgaben Kleines 1x1 A · 8 = Lösung.
Test Summary: ein Fehler pro Tag Test First
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Netzwerk - Programmierung Server Design Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Madis Rumming mrumming@cebitec.uni-bielefeld.de

Übersicht Wiederholung Konkurierende Verbindungen

Wiederholung use strict; use IO::Socket::INET; my $socket = IO::Socket::INET->new( LocalPort => $server_port, Listen => SOMAXCONN, ReuseAddr => 1); while (my $connect = $socket->accept) { print "accepting connection\n"; foreach (1..10) { $connect->print(scalar(localtime()),"\n"); sleep(1); } print "closing connection\n"; $connect->close; }

Was unterscheidet daytime.pl von einem „richtigen“ Server? Aufgaben Starte den Server daytime.pl aus dem Übungsarchiv und versuche, Verbindung mit telnet oder dem einfachen Client aus der sechsten Stunde aufzunehmen. Was unterscheidet daytime.pl von einem „richtigen“ Server? Der daytime-Server kann immer nur eine Verbindung gleichzeitig abarbeiten. Es können zwar mehrere Clients Verbindung aufnehmen, aber sie werden sequentiell abgearbeitet. Die Zahl der Clients in der Warteschlange kann nicht beliebig groß werden, sie ist durch die listen queue begrenzt.

Wiederholung, cont. Probleme: nur ein Client gleichzeitig Anzahl akzeptierter Clients abha¨ngig von listen queue iterative server Lösungen: gelerntes anwenden fork() select() $socket->blocking(0) Threads concurrent server

Arbeitsweise Server, rev.

Sorge dafür das die Kind Prozesse nicht zu Zombies werden. Aufgaben Erweitere den iterativen daytime-Server so, daß Anfragen von einem Kind-Prozeß verarbeitet werden und der eigentliche Server sofort neue Verbindungen akzeptieren kann. Was ist alles zu beachten ? Sorge dafür das die Kind Prozesse nicht zu Zombies werden. forking server, noch nicht vollsta¨ndig: while (my $connect = $socket->accept) { my $cpid = fork(); if (defined($cpid)) { if ($cpid == 0) { # child $socket->close; my $client_port = $connect->peerport(); my $client_host = $connect->peerhost(); print scalar(localtime()), " - accepting connection from $client_host:$client_port\n"; foreach (1..10) { $connect->print(scalar(localtime()),"\n"); sleep(1); } print "closing connection\n"; $connect->close; exit; } else { # parent } else { die "can’t fork: $!\n"; Diese Version hinterläßt Zombies, da sie nicht wait() aufruft.

Lösung in erster Näherung: Probleme Lösung in erster Näherung: $SIG{CHLD} = sub { wait(); }; while (my $connect = $socket->accept) { my $cpid = fork(); if (defined($cpid)) { ... Problem: Server beendet sich nach einem Kind-Prozeß alternativer Code: while (1) { my $connect = $socket->accept; my $cpid = fork();

Aufgaben Nachdem sich der erste Kind-Prozeß beendet hat, bricht der Server mit einer Fehlermeldung ab. Versuche herauszufinden, was den Fehler verursacht. Tipp: Der Fehler ist nur eine Folgeerscheinung. Werte an der ”richtigen“ Stelle $! aus. Weitere Hinweise liefert die man-page zur C-Version von accept(): $ man -s 3 accept oder im WWW unter http://linux.die.net/man/3/accept Wie muß der Server-Code aussehen, um das Problem zu umgehen? Das Problem ist, daß der accept()-Aufruf vom SIGCHLD des Kind-Prozesses unterbrochen wird. Dadurch liefert accept den Wert undef zurück und $! enthä lt Interrupted system call Siehe dazu die Beschreibung des Fehlers EINTR in der man-page vo accept. • Dieser Fall muß abgefangen werden: while (1) { my $connect = $socket->accept; next unless defined($connect);

Aufgaben Was passiert, wenn der Client vorzeitig die Verbindung schließt ? Sorge dafür, daß das Problem umgegangen wird und die Kind-Prozesse ordnungsgemäß beendet werden ? Wenn der Client vorzeitig die Verbindung schließt, erha¨ lt der entsprechende Kind-Prozeß ein SIGPIPE und beendet sich. Dies ist in dem vorliegenden Beispiel nicht weiter tragisch, aber in realen Servern sollte der Prozeß die Mo¨ glichkeit haben, angemessen darauf zu reagieren. • Die Lo¨ sung besteht darin, einen entsprechenden Handler fu¨ r dieses Signal einzurichten: $SIG{PIPE} = sub { die "exiting: $!\n"; };