Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Programmieren mit sockets Alexander Sczyrba

Slides:



Advertisements
Ähnliche Präsentationen
Aufbau eines Netzwerkes
Advertisements

Ausführen.
Kapitel 4: Design von Client/Server-Software
Allgemeine Technologien II
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.
1 NetWork File System © April 2002, G. Hellberg Network File System Konfiguration und Einsatz.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
Einführung in die Programmierung Datensammlung
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
CCNA2 – Module 4 Learning about Other Devices
Wichtige Fachausdrücke in C
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.
DNS Domain Name System oder Domain Name Service
Steuerung externer Komponenten über ein USB-Interface.
EXCEL PROFESSIONAL KURS
Internet: Funktionsweise und Dienste
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
Firewall.
Systemaufbau / Komponenten
Allgemeine Technologien I Sitzung am Mailserver
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Netzwerkprogrammierung
Einführung in die Programmiersprache C 4
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
Grundlagen der Netzwerktechnik
Netzwerke.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Netzwerke.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
iMAS Schnittstellen - Übersicht
Provider und Dienste im Internet
DNS DNS Das Domain Name System ist der Dienst im Internet, der DNS Namen in entsprechenden IP Adressen umsetzt und umgekehrt auch IPAdressen Namen zuordnen.
VPN – Virtual Private Network
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Willkommen zum Brückensemester
Willkommen zur Ventrilo einstellhife. 1.Zu erst installieren Sie das Programm. 2.Starten Sie das Programm mit Doppelklick auf.
Datenbanken im Web 1.
Internet-Grundtechnologien. Client / Server Client („Kunde“): fordert Information / Datei an im Internet: fordert Internetseite an, z.B.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Aufbau eines Netzwerkes
Netzwerke. IPv4 Rechner/Server werden im Internet eindeutig durch IP Adressen identifiziert Adressen sind 32-Bit-Zahlen, die in viermal acht Bit aufgeteilt.
Eine komplexe Netzanwendung Webserver und Datenbankserver im Netzwerk in einer Anwendung einrichten.
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
LINUX II Samba Verbindung mit Windows. Samba Übersicht ● Samba dient zur Verbindung von Linux-Clients mit Windows Rechnern ( samba-client ) sowie von.
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
Camil Bartkowiak Serhat Cinar Leonardo Di Lella Jan Finsel
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Systeme II 6. Die Anwendungsschicht
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Vorlesung Datenbankprogrammierung
Tutorstunde 10.
 Präsentation transkript:

Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Programmieren mit sockets Alexander Sczyrba Jan Krüger

Center for Biotechnology Bielefeld Bioinformatics Service Übersicht ● Datentypen und Konversionsfunktionen ● minimaler Client ● minimaler Server

Center for Biotechnology Bielefeld Bioinformatics Service Berkeley sockets ● sockets API, erstmals in 4.2BSD (1983) ● sehr genereller Aufbau: ● TCP/IP ● named pipes ● OSI-Protokolle ●... ● C-Funktionen ● Adress- und Portinformationen in structs ● spezielle Perl-Funktionen zur „Typkonversion“

Center for Biotechnology Bielefeld Bioinformatics Service Namen und Adressen ● Netzwerk-Interface durch IP-Adresse identifiziert ● dotted quad-Notation: ● „lesbare“ Namen durch Domain Name System (DNS) → ● keine Bijektion ● → bk-in-f147.1e100.net ● keine mathematische Funktion ● → ( , )

Center for Biotechnology Bielefeld Bioinformatics Service Adress-Konversion ● use Socket; ● Binärdarstellung für socket-Funktionen $iaddr = inet_aton(’ ’); $iaddr = inet_aton(’ ● alternativ $iaddr = gethostbyname(’ ● andere Richtung: $dotquad = inet_ntoa($iaddr); ● Namen ermitteln $name = gethostbyaddr($iaddr, AF_INET);

Center for Biotechnology Bielefeld Bioinformatics Service Aufgaben ● Wandle die folgenden Namen in Binärdarstellung um. Übersetze diese anschließend in dotted quad-Notation zurück, bzw. löse sie mit Hilfe des DNS wieder zu Namen auf. Führe das Skript mehrfach aus. Was ist zu beobachten? = qw(goldfinger goldfinger.TechFak.Uni-Bielefeld.DE ); ● Überprüfe die Ergebnisse mit dem Programm dig: $ dig

Center for Biotechnology Bielefeld Bioinformatics Service Weitere Funktionen ● Protokolle (vgl. /etc/protocols) $proto = getprotobyname(’tcp’); $tcp = getprotobynumber(6); ● Services (vgl. /etc/services) $service = getservbyname(’daytime’, ’tcp’); $daytime = getservbyport(13, ’tcp’);

Center for Biotechnology Bielefeld Bioinformatics Service Socket Adressen ● socket: Kombination aus Adresse und Port ● $sockaddr = sockaddr_in($port, $iaddr); ● andere Richtung ● ($port, $iaddr) = sockaddr_in($sockaddr); ● andere Adressfamilien ● $fifo = sockaddr_un(’/tmp/socket’);

Center for Biotechnology Bielefeld Bioinformatics Service Arbeitsweise Client socket()connect()I/Oclose() Server

Center for Biotechnology Bielefeld Bioinformatics Service Client-Code ● erzeugen eines sockets: ● socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname(’tcp’)) || die "can’t open socket: $!"; ● Verbindung herstellen: ● $sockaddr = sockaddr_in($peer_port, $peer_iaddr)); connect(SOCKET, $sockaddr) || die "can’t connect: $!"; ● SOCKET zum lesen/schreiben verwenden ● socket schließen: ● close(SOCKET);

Center for Biotechnology Bielefeld Bioinformatics Service Aufgaben ● Mach Dich mit dem ServiceServer (Material zu dieser Übung) vertraut und teste beide Services mit telnet ● Welche Services bietet der Server ? ● Schreibe ein Client-Programm, das eine Verbindung aufbaut, ein Commando absetzt (optional), alle Daten liest und die Verbindung wieder beendet. Der Zielrechner, der Zielport und das abzusetzende Kommando sollen als Argumente übergeben werden können. ● Probiere den Client mit dem ServiceServer aus ! ● Teste den Client auch mit dem WebServer der Technischen Fakultät ! Welcher Port, welches Protokoll und was für ein Kommando muss man benutzen um sich Einstiegsseite anzeigen zu lassen?

Center for Biotechnology Bielefeld Bioinformatics Service Socket- Informationen ● Port wird dynamisch zugewiesen (ephemeral port) ● beliebiges Interface bei multihomed host ● Informationen über sockets ermitteln: $mysockaddr = getsockname(SOCKET); $hissockaddr = getpeername(SOCKET); ● Weiterverarbeitung mit sockaddr_in()

Center for Biotechnology Bielefeld Bioinformatics Service Aufgaben ● Erweitere das Programm aus der letzten Aufgabe so, daß alle Daten zur Verbindung angezeigt werden. Zur Erinnerung: ● socket pair: (IP-AdresseL, PortL, IP-AdresseR, PortR) ● Rufe das Programm mehrfach auf. Was ist zu beobachten?

Center for Biotechnology Bielefeld Bioinformatics Service Arbeitsweise Server socket()bind()listen()accept()close() socket()conect()close() IOIO IOIO

Center for Biotechnology Bielefeld Bioinformatics Service Server-Code, Teil 1 ● socket(...) wie im Client ● socket an Port/Adresse binden: ● $sockaddr = sockaddr_in($local_port, INADDR_ANY); bind(SOCKET, $sockaddr) || die "can’t bind socket: $!"; ● passive open und backlog: ● listen(SOCKET, SOMAXCONN) || die "can’t listen: $!"; ● tatsächliche Größe des backlog abhängig vom Betriebssystem

Center for Biotechnology Bielefeld Bioinformatics Service Server-Code, Teil 2 ● Verbindungen entgegennehmen: ● $client_sockaddr = accept(CONNECT, SOCKET) ● accept() blockiert, bis Verbindung hergestellt ● $client_sockaddr enthält Informationen über peer ● typischerweise in Schleife: ● while ($client_sockaddr = accept(... )) {... } ● CONNECT zum lesen/schreiben verwenden ● am Ende Verbindungs-socket schließen: ● close(CONNECT);

Center for Biotechnology Bielefeld Bioinformatics Service Server-Code, cont. ● typischer Server-Code: ● socket(SOCKET, …) bind(SOCKET, …) listen(SOCKET, … ) ● while ( $sockaddr = accept(CONNECT, SOCKET)) { print CONNECT … oder line = close(CONNECT) ● } ● close(SOCKET) # optional

Center for Biotechnology Bielefeld Bioinformatics Service Aufgaben ● Schreibe 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: ● Du kannst den Server entweder mit dem Client aus der letzten Aufgabe oder mit dem Programm telnet testen.

Center for Biotechnology Bielefeld Bioinformatics Service Aufgaben ● Starte mehrere Clients gleichzeitig: ● client.pl & [enter] client.pl & [enter] client.pl & [enter] ● Was ist zu beobachten? ● Starte zwei Clients mit der gleichen Portnummer gleichzeitig: ● client.pl & [enter] client.pl & [enter] ● Was passiert? ● Beende den Server und versuche ihn sofort mit der gleichen Portnummer neu zu starten. Was passiert? ● Was passiert, wenn Du den Client mit CTRL-C abbrichst, während er Daten vom Server liest?