Netzwerk - Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Apache - PHP - MySQL Apache-PHP-MySQL.
Advertisements

Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Attribute Profile.
Internetzugriff mit Strings und Streams
Java News & Music Der Chat
Java: Dynamische Datentypen
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,
Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (7)
Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
CCNA2 – Module 4 Learning about Other Devices
Erstellen eines Zufallsgenerators
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.
Steuerung externer Komponenten über ein USB-Interface.
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,
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Allgemeine Technologien I Sitzung am Mailserver
Netzwerkprogrammierung
Univ.-Lektor Dipl.-Ing. Dr. Markus Schranz staatlich befugter und beeideter Ingenieurkonsulent für Informatik Web Application Engineering & Content Management.
Grundlagen der Netzwerktechnik
Grundkonzepte des Programmierens (mit ActionScript)
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.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Mailserver Protokollen Universität zu Köln WS 2008/09 Allgemeine Technologien I Dozentin: Susanne Kurz M.A. Referentin: Bethzy Gianella.
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)
SNMP – Simple Network Management Protocol
Paketübertragung mit Sockets Was, wohin? Adressierung durch java.net.InetAddress Bsp: adr=InetAddress.getByName(“localhost“); Pakete sind java.net.DatagramPacket.
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.
Java Programme nur ein bisschen objektorientiert.
Patrick Richterich Lattwein GmbH Web Services Softwareentwicklung mit SOAP.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
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
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
Deutscher Perl Workshop 2014 PORF Practice
Netzwerke - Protokolle
Der Chatclient.
Netzwerk - Programmierung
Whoami. whoami Tobias FROGGS Slangs sub languages.
Netzwerk - Programmierung
Netzwerk - Programmierung
Systeme II 6. Die Anwendungsschicht
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Create Table, Rechte und Rollen
Tutorstunde 10.
Implementieren von Klassen
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Netzwerk - Programmierung IO::Socket API Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de

Übersicht IO::Socket Methoden Benutzung von IO::Socket TCP Client TCP Server

IO::Handle Klassenhierachie IO::Socket API IO::Handle Klassenhierachie IO:: Handle stellt OO-Syntax für alle Perl I/O Methoden IO::Socket definiert zusätzlich Methoden für Berkeley Sockets Dabei erzeugt man immer ein IO::Socket::INET oder IO::Socket::UNIX Objekt IO::Handle IO::File IO::Pipe IO::Socket IO::Socket::INET IO::Socket::UNIX

IO::Socket::INET Objekte $socket = IO::Socket::INET->new(@args) Erzeugt ein IO::SOCKET::INET Objekt Gibt das neu erzeugte Objekt zurück Im Falle eines Fehlers : undef Akzeptiert zwei Arten von Argumenten: „shortcut“ : IO::Socket::INET->new($host:$port“) Argumentliste

IO::Socket::INET->new() Argument Beschreibung Wert PeerAddr Remote Host <hostname | address> [:port] PeerPort Remote Port/Service <service name | port number> LocalAddr Lokaler Host LocalPort Lokaler Port/Service Proto Protokoll <protocol name | number> Type SocketTyp SOCK_STREAM | SOCK_DGRAM Timeout Timeout Wert <Integer> Listen Queuegröße für Listen ... 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);

Beispiel oder: addrconv.pl: $echo = IO::Socket::INET->new(PeerAddr => ’asien:echo’) or die "Can’t connect: $!\n"; oder: $echo = IO::Socket::INET->new( PeerAddr => ’asien’, PeerPort => ’echo’, Type => SOCK_STREAM, Proto => ’tcp’) or die "Can’t connect: $!\n"; 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"; }

IO::Socket Objektmethoden(1) $return val = $socket->connect($dest addr) $return val = $socket->bind($local addr) werden normalerweise automatisch durch new() aufgerufen $my addr = $socket->sockhost() $her addr = $socket->peerhost() geben volle dotted-quad Form der verbundenen Hosts zurück Auch diese Funktionen liefern im Listen Kontext weitere Informationen zurueck.

IO::Socket Objektmthoden (2) $connected socket = $socket->accept() Akzeptiert die nächste ankommende Verbindung des listening $socket-Objekts und gibt den verbunden Socket dieser Session zurück. $connected_socket kann dann zur Kommunikation mit dem Remote-Host verwendet werden. $socket->close() Schließt den Socket. u.v.m. . . . (siehe man IO::Socket)

Aufgaben Schreibe mit Hilfe von IO::Socket ein Client Programm das eine Verbindung aufbaut, alle Daten liest und die Verbindung wieder beendet. Der Zielrechner und der Zielport sollen als Argumente übergeben werden können. Probiere den Client mit dem ServiceServer (Material zur vorherigen Übung) aus. Tipp: das IO::Socket::INET Objekt kann in der lesenden Schleife als Filehandle benutzt werden: while ($in = <$socket>) { … } #!/usr/bin/env perl use IO::Socket; my $host = shift || ’localhost’; my $port = shift || ’daytime’; my $socket = IO::Socket::INET->new("$host:$port") or die "Can’t connect to port $port at $host: $!\n"; print ("connected to ". $socket->peerhost().":". $socket->peerport()."\n"); my $line; while (defined($line = <$socket>)) { print $line; } $socket->close || die "can’t close socket: $!";

Aufgaben Schreibe mit Hilfe des Moduls IO::Socket einen Server, der auf Verbindungen wartet, zwei Zeilen Text sendet und dann die Verbindung schließt. Die erste Zeile soll den Client begrüßen, die zweite soll die aktuelle Uhrzeit ausgeben: hello goldfinger.TechFak.Uni-Bielefeld.DE, nice to meet you it’s Mon Jun 2 15:14:17 2003 Du kannst den Server entweder mit dem Client aus der letzten Aufgabe oder mit dem Programm telnet testen. #!/usr/bin/env perl use IO::Socket; my $quit=0; $SIGINT = sub $quit++ ; my $port = shift; my $socket = IO::Socket::INET->new( Listen => 10, LocalPort => $port, Timeout => 60, Reuse => 1) or die "Can’t create listening socket: $!\n"; print STDERR "waiting for incoming connections on port $port...\n"; while(!$quit) { next unless my $session = $socket->accept; my $peerhost = $socket->peerhost(); my $peerport = $socket->peerport(); print STDERR "connection from $peerhost:$peerport\n"; print $session "hello $peerhost, nice to meet you\n"; print $session "it’s ".localtime()."\n"; $session->close(); } $socket->close() || die "can’t close socket: $!";