Netzwerk - Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Hochschule Fulda – FB ET Sommersemester 2010
Advertisements

Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Vs Klassifizierung von Kommunikationsdiensten synonym:Nachrichtensystem/dienst(message service) Kommunikationssystem/dienst(communication service)
Allgemeine Technologien II
Ausnahmen HS Merseburg (FH) WS 06/07.
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.
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Perl-Grundlagen Teile der Präsentation von A. Grupp,
Aufgabe Hardwarenahe Programmierung Bluetooth/Lan-Gateway Frank Reichenbach LAN/WLAN Bluetooth Kommunikation zwischen zwei Clients über Client 1 verbindet.
Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen.
Datenströme DVG Datenströme.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
© ISY Informationssysteme GmbHSeite: 1 Funktionsbeschreibung ISY-Connect stellt eine Kommunikationsschnittstelle dar, die es ermöglicht, in heterogenen.
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,
Socket-Programmierung
Test Netzwerke 1 Grundlagen.
Willkommen Admin! Use Case 1: Forum-Administration -> Task 2 User erstellen -> Task 1 Anzeige User Liste -> Task 3 User löschen -> Task 5 User sperren.
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Allgemeine Technologien I Sitzung am Mailserver
Seminar Internet Technologien
Netzwerkprogrammierung
You need to use your mouse to see this presentation.
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
Objektorientiertes Konstruieren
Netzwerke.
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.
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Einführung in PHP.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
1 Projekt1: Prozesse unter Unix Aufgabenstellung 2: Interprozessnachrichtentausch.
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.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
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.
1 Lösung Hausaufgabe 5-1 Seite 1 #!perl -w # Datei Oeffnen und Variablen initialisieren $infile = "daten5-3.txt"; $im=$iw=$sm=$sw=0; open (IN,$infile)
A SHORT INTRODUCTION TO CONCURRENT EUCLID Entwicklung von Euclid 1976 Entwicklung von Euclid 1977 Entwicklung des „TORONTO Euclid“ 1977 Entwicklung.
IS: Datenbanken, © Till Hänisch 2000 Windows Netzwerke TCP/IP oder was ?
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
LINUX II Unit 7 LAMP Server. LAMP ● Linux – Apache - MySQL – PHP ● Leistungsfähiges und kostenloses System zur Genrierung von dynamischen Webseiten und.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Aufbau eines IPv6-Netzwerkes Das folgende Netzwerk wird in dieser Einheit nach und nach aufgebaut.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Vorbesprechung, Administrativa, Einführung Alexander Sczyrba
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
Vs3 1 3 Netzdienste im Internet. vs3 2 Netzdienste = über Ports ansprechbare Dienste, die hauptsächlich (aber nicht nur) für die Fernnutzung gedacht sind.
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
Port-Forwarding Der PC möchte vom Internet aus auf den http-Server zugreifen. Er sieht nur die IP-Adresse und den Port des Routers. http-Server PC Router.
Klausur „Diskrete Mathematik II“
Netzwerk - Programmierung
Whoami. whoami Tobias FROGGS Slangs sub languages.
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Tutorstunde 10.
TCP/IP Transmission Control Protocol/Internet Protocol
 Präsentation transkript:

Netzwerk - Programmierung Concurrent Clients Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Madis Rumming mrumming@cebitec.uni-bielefeld.de

Übersicht Server-Implementierung mit IO::Socket TCP Echo Client Concurrent Clients

Schreibe mit Hilfe von IO::Socket einen Client, der Aufgabe Schreibe mit Hilfe von IO::Socket einen Client, der • zeilenweise Eingaben an den Server schickt • und Ausgaben vom Server zeilenweise ausgibt Wie verhält sich Dein Client bei einem echo-Server (vgl. Material zu Programmieren mit Sockets)? Wie verhält er sich bei einem whois- Server (bspw. ’whois.arin.net’, Port 43)? Vergleiche dazu die Ausgabe mit z.B. whois -h whois.arin.net google.com. Wo liegt das Problem? echoclient.pl: #!/usr/bin/env perl use IO::Socket; my $host = shift || ’localhost’; my $port = shift || ’echo’; my $socket = IO::Socket::INET->new("$host:$port") or die "Can’t connect to port $port at $host: $!\n"; while (defined(my $msg_out = <STDIN>)) { print $socket $msg_out; my $msg_in = <$socket>; print $msg_in; } $socket->close;

Problematischer Client use IO::Socket; my $host = shift || ’localhost’; my $port = shift || ’echo’; my $socket = IO::Socket::INET->new("$host:$port") or die "Can’t connect to port $port at $host: $!\n"; while (defined(my $msg_out = <STDIN>)) { print $socket $msg_out; my $msg_in = <$socket>; print $msg_in; } $socket->close;

Auch folgender Versuch schlägt fehl: Deadlocks Auch folgender Versuch schlägt fehl: while ($from_server = <$socket>){ print $from_server; … } Server und Client warten gleichzeitig auf Eingaben und Erzeugen so einen Deadlock. Im Listen-Kontext liefern die gethostby*-Funktionen weitere Informationen: ($name, $aliases, $type, $len, $iaddr) = gethostbyname($reqname); ($name, $aliases, $type, $len, $iaddr) = gethostbyaddr($reqiaddr, AF_INET);

Parent kopiert die Daten vom Client zum Server Concurrent Clients Lösung : Entkoppeln der lesenden und schreibenden Prozesse durch fork() Parent kopiert die Daten vom Client zum Server Child liest Daten von Server Problem: korrektes Beenden der Prozesse addrconv.pl: use Socket; my @hosts = qw(goldfinger goldfinger.TechFak.Uni-Bielefeld.DE www.ebay.com www.uni-paderborn.de www.cnn.com www.bielefeld.de); foreach $in_name (@hosts) { # my $iaddr = gethostbyname($in_name); my $iaddr = inet_aton($in_name); my $dotqd = inet_ntoa($iaddr); my $out_name = gethostbyaddr($iaddr, AF_INET); print "$in_name -> $iaddr -> $out_name ($dotqd)\n"; }

Verbindungsabbau forked Client Server Server Server Server Server sleep() sleep() sleep() exit() exit() Parent Child Parent Child Parent Child Parent Parent Child Parent CHLD Zeit Auch diese Funktionen liefern im Listen Kontext weitere Informationen zurueck.

Aufgabe Schreibe einen Client, der folgendermassen aufgebaut ist: Socket erzeugen fork() Parent kopiert von STDIN zum Socket (user2host()) Child kopiert vom Socket nach STDOUT (host2user()) Parent reagiert auf Signal CHLD und beendet sich Parent initiiert shutdown(1), wenn User-Eingabe beendet Child beendet sich bei EOF vom Server