Fachbereich Mathematik / Informatik FG Datenbanken / Interaktive Systeme Prof. Dr. Lutz Wegner Sebastian Pape 21. Juli 2006

Größe: px
Ab Seite anzeigen:

Download "Fachbereich Mathematik / Informatik FG Datenbanken / Interaktive Systeme Prof. Dr. Lutz Wegner Sebastian Pape 21. Juli 2006"

Transkript

1 Sebastian Pape 21. Juli 2006 Interprozeßkommunikation Schlusstest Allgemeines Grundlage des Schlußtests sind die Programme server.cpp, client.cpp und local.h im Verzeichnis /home/ipc/klausur. Als Hilfsmittel erlaubt sind: Das Skript, eigene Aufzeichnungen, sämtliche Übungen einschließlich Lösungsvorschlägen und Beispielprogrammen in /home/ipc/ sowie alle Dokumentation, die auf rapunzel in Form von Manpages, Infopages, selbst bearbeiteten Aufgaben, etc. vorhanden ist. Die Benutzung eigener Notebooks ist gestattet. Jegliche Kommunikationsversuche - unabhängig davon, in welcher Form sie stattfinden - führen zum Ausschluss von der Prüfung. Um die nachfolgenden Aufgaben zu bearbeiten, führe deshalb zunächst die folgenden Schritte durch: Setze die Rechte deines Homeverzeichnisses auf 700. (chmod 700 ) Lege in Deinem Homeverzeichnis ein Unterverzeichnis klausur an. (mkdir /klausur) Achte bei der Bearbeitung der Aufgaben auf folgendes: Kommentiere die notwendigen Änderungen knapp im Sourcecode. Benutze bei den Aufgaben jeweils die Programme, die sich aus der vorhergehenden Teilaufgabe ergeben. Kopiere nach dem Bearbeiten einer Teilaufgabe deine Programme in das Verzeichnis /klausur. Benenne den Sourcecode sowie das dazugehörige kompilierte Programm dabei nach den Teilaufgaben: (server client). Aufgabennr.[cpp] also z.b. server.3.cpp bzw. die entsprechend kompilierte Version dann server.3. 1

2 Sebastian Pape 21. Juli 2006 Interprozeßkommunikation Schlusstest Aufgaben Beim vorliegenden Server/Client-Paar server.cpp und client.cpp im Verzeichnis /home/ipc/klausur schickt der Client Benutzereingaben an den Server, der die empfangenen Texte in Großbuchstaben wieder zurücksendet. Dies wiederholt der Client solange, bis er eine Eingabe erhält, die mit einem Punkt beginnt. Erhält der Server eine Eingabe, die mit einem Punkt beginnt, schließt er die Verbindung. Erstelle ausgehend von diesem Programm nach und nach einen rudimentären Schlüsselserver. 1. Ändere den Server so ab, daß er nicht mehr den Port aus der Datei local.h benutzt, sondern sich selbstständig einen freien Port aussucht. Dazu ist es ausserdem notwendig, daß der Server den benutzten Port ausgibt und der Client den Port, zu dem er sich verbinden soll, auf der Commandozeile übergeben bekommt. Programmiere auch diese beiden Änderungen. 2. Da die Verbindung zum Server immer nur sehr kurz ist, braucht die Verbindung nicht mit Sohnprozessen abgewickelt zu werden. Entferne also den fork-teil des Servers so, daß dieser trotzdem noch (hintereinander) mit mehreren Clients kommunizieren kann. 3. Nun soll die Ausgabe des Servers verändert werden. Anstelle der trivialen Wandlung in Großbuchstaben soll er nun zu jeder Eingabe die Ausgabe des Unix-Programms sha1sum zurückliefern. Achte darauf, dass der Client die Ausgabe des Servers komplett ausgibt und passe ihn gegebenenfalls an. Es darf davon ausgegangen werden, daß der im Client eingegebene String keine enthält. 4. Abschließend stellen wir fest, dass Server und Client auf Grund des kurzen Datenaustausches besser über einen verbindungslosen Socket kommunizieren würden. Ändere also Client und Server so ab, daß sie verbindungslose Sockets benutzen. Stelle sicher, daß der Server so (gleichzeitig) mit mehreren Clients kommunizieren kann. 2

3 Sebastian Pape 21. Juli 2006 Interprozeßkommunikation Lösungsvorschlag - Schlußtest Allgemeines Grundlage des Schlußtests sind die Programme server.cpp, client.cpp und local.h im Verzeichnis /home/ipc/klausur. Als Hilfsmittel erlaubt sind: Das Skript, eigene Aufzeichnungen, sämtliche Übungen einschließlich Lösungsvorschlägen und Beispielprogrammen in /home/ipc/ sowie alle Dokumentation, die auf rapunzel in Form von Manpages, Infopages, selbst bearbeiteten Aufgaben, etc. vorhanden ist. Die Benutzung eigener Notebooks ist gestattet. Jegliche Kommunikationsversuche - unabhängig davon, in welcher Form sie stattfinden - führen zum Ausschluss von der Prüfung. Um die nachfolgenden Aufgaben zu bearbeiten, führe deshalb zunächst die folgenden Schritte durch: Setze die Rechte deines Homeverzeichnisses auf 700. (chmod 700 ) Lege in Deinem Homeverzeichnis ein Unterverzeichnis klausur an. (mkdir /klausur) Achte bei der Bearbeitung der Aufgaben auf folgendes: Kommentiere die notwendigen Änderungen knapp im Sourcecode. Benutze bei den Aufgaben jeweils die Programme, die sich aus der vorhergehenden Teilaufgabe ergeben. Kopiere nach dem Bearbeiten einer Teilaufgabe deine Programme in das Verzeichnis /klausur. Benenne den Sourcecode sowie das dazugehörige kompilierte Programm dabei nach den Teilaufgaben: (server client). Aufgabennr.[cpp] also z.b. server.3.cpp bzw. die entsprechend kompilierte Version dann server.3. 1

4 Sebastian Pape 21. Juli 2006 Interprozeßkommunikation Lösungsvorschlag - Schlußtest Aufgaben Beim vorliegenden Server/Client-Paar server.cpp und client.cpp im Verzeichnis /home/ipc/klausur schickt der Client Benutzereingaben an den Server, der die empfangenen Texte in Großbuchstaben wieder zurücksendet. Dies wiederholt der Client solange, bis er eine Eingabe erhält, die mit einem Punkt beginnt. Erhält der Server eine Eingabe, die mit einem Punkt beginnt, schließt er die Verbindung. Erstelle ausgehend von diesem Programm nach und nach einen rudimentären Schlüsselserver. Bei den beiden Programmen handelt es sich um die bereits aus den Übungen bekannten Programme p10.6.cxx und p10.7.cxx von Gray. 1. Ändere den Server so ab, daß er nicht mehr den Port aus der Datei local.h benutzt, sondern sich selbstständig einen freien Port aussucht. Dazu ist es ausserdem notwendig, daß der Server den benutzten Port ausgibt und der Client den Port, zu dem er sich verbinden soll, auf der Commandozeile übergeben bekommt. Programmiere auch diese beiden Änderungen. Die Aufgabe ist Teil von Übung 7.4: int 3 main ( ) { Listing 1: server.1.cpp 4 //Ein paar z u s a e t z l i c h e Variablen f u e r i n f o a d r sind e r f o r d e r l i c h s o c k l e n t c l n t l e n, i l e n ; // Length o f c l i e n t address 7 struct sockaddr in // I n t e r n e t addr c l i e n t & s e r v e r 8 c l n t a d r, serv adr, i n f o a d r ; // h i e r waehlt der Server s e l b e r den Port (PORT > 0) 11 s e r v a d r. s i n p o r t = htons ( 0 ) ; // Use our f a k e port 12 // BIND 2

5 Sebastian Pape 21. Juli // I n f o s a u s l e s e n ( getsockname ) 15 i l e n=sizeof ( i n f o a d r ) ; 16 memset(& i n f o a d r, 0, i l e n ) ; 17 i f ( getsockname ( o r i g s o c k, ( struct sockaddr ) &i n f o a d r, &i l e n ) < 0) 18 { 19 p e r r o r ( getsockname g e t h o s t e n t e r r o r ) ; 20 c l o s e ( o r i g s o c k ) ; 21 e x i t ( 9 ) ; 22 } 23 // Port ausgeben 24 p r i n t f ( \nport Nr : %d\n, ntohs ( i n f o a d r. s i n p o r t ) ) ; } int Listing 2: client.1.cpp 3 main ( int argc, char argv [ ] ) { // Abfrage auf 3 Argumente aendern 6 i f ( argc!= 3 ) { // Check cmd l i n e f o r h o s t name 7 c e r r << usage : << argv [ 0 ] << s e r v e r << # p o r t << endl ; 8 return 1 ; 9 } // A n s t e l l e von PORT das 2. Argument benutzen 12 s e r v a d r. s i n p o r t = htons ( a t o i ( argv [ 2 ] ) ) ; // Use our f a k e port } 2. Da die Verbindung zum Server immer nur sehr kurz ist, braucht die Verbindung nicht mit Sohnprozessen abgewickelt zu werden. Entferne also den fork-teil des Servers so, daß dieser trotzdem noch (hintereinander) mit mehreren Clients kommunizieren kann. Hier sind lediglich im Server 4 Zeilen zu löschen, der Client bleibt unverändert: Listing 3: server.2.cpp 3

6 Sebastian Pape 21. Juli do { } 5 // f o r k f a e l l t n a t u e r l i c h weg, es b l e i b t nur d i e B e a n t w o r t u n g s s c h l e i f e 6 while ( ( l e n=read ( new sock, buf, BUFSIZ) ) > 0 ) { 7 for ( i =0; i < l e n ; ++i ) // Change t he case 8 buf [ i ] = toupper ( buf [ i ] ) ; 9 w r i t e ( new sock, buf, l e n ) ; // Write back to s o c k e t 10 i f ( buf [ 0 ] ==. ) break ; // Are we done y e t? 11 } 12 // auch das return muss weg und c l o s e ( new sock ) r e i c h t einmal 13 c l o s e ( new sock ) ; 14 } while ( true ) ; // FOREVER 15 return 0 ; 16 } Nun soll die Ausgabe des Servers verändert werden. Anstelle der trivialen Wandlung in Großbuchstaben soll er nun zu jeder Eingabe die Ausgabe des Unix-Programms sha1sum zurückliefern. Achte darauf, dass der Client die Ausgabe des Servers komplett ausgibt und passe ihn gegebenenfalls an. Es darf davon ausgegangen werden, daß der im Client eingegebene String keine enthält. Analog zu Übung 8.2 läßt sich im Server die Beantwortung anpassen: int 3 main ( ) { 4... Listing 4: server.3.cpp 5 //Ausserdem brauchen wir nun ein paar z u s a e t z l i c h e Variablen f u e r sha1sum 6 struct hostent h o s t i n f o ; 7 FILE f i n ; 8 static char sha1buf [ BUFSIZ ] ; // f u e r Ergebnis sha1sum // f o r k f a e l l t n a t u e r l i c h weg, es b l e i b t nur d i e B e a n t w o r t u n g s s c h l e i f e 12 while ( ( l e n=read ( new sock, buf, BUFSIZ) ) > 0 ) { 4

7 Sebastian Pape 21. Juli // Pipe mit sha1sum o e f f n e n memset ( sha1buf, 0x0, BUFSIZ) ; 16 s p r i n t f ( sha1buf, echo \ % s \ sha1sum\n, buf ) ; 17 f i n = popen ( sha1buf, r ) ; 18 memset ( sha1buf, 0x0, BUFSIZ) ; 19 //... und a u s l e s e n 20 read ( f i l e n o ( f i n ), sha1buf, BUFSIZ) ; 21 // cout << sha1sum << sha1buf ; // debug w r i t e ( new sock, sha1buf, BUFSIZ) ; // Write back to s o c k e t 24 i f ( buf [ 0 ] ==. ) break ; // Are we done y e t? 25 } } Im Client muss die Leselänge geändert werden: Listing 5: client.3.cpp 2 do { // Process 3 w r i t e ( f i l e n o ( stdout ), >, 3) ; 4 i f ( ( l e n=read ( f i l e n o ( s t d i n ), buf, BUFSIZ) ) > 0) { 5 w r i t e ( o r i g s o c k, buf, l e n ) ; 6 // d i e Leselaenge muss h i e r v e r a e n d e r t werden 7 i f ( ( l e n=read ( o r i g s o c k, buf, BUFSIZ) ) > 0 ) 8 w r i t e ( f i l e n o ( stdout ), buf, l e n ) ; 9 } Abschließend stellen wir fest, dass Server und Client auf Grund des kurzen Datenaustausches besser über einen verbindungslosen Socket kommunizieren würden. Ändere also Client und Server so ab, daß sie verbindungslose Sockets benutzen. Stelle sicher, daß der Server so (gleichzeitig) mit mehreren Clients kommunizieren kann. Hier muss etwas mehr getan werden als bei den Aufgaben zuvor. Leichter wird s wenn man sich an Übung 9.1 und 9.2 orientiert: 1 #include l o c a l. h 2 #include <netdb. h> 3 void s i g n a l c a t c h e r ( int ) ; Listing 6: server.4.cpp 5

8 Sebastian Pape 21. Juli int 5 main ( ) { 6 int sock ; // O r i g i n a l s o c k e t in s e r v e r 7 s o c k l e n t c l i e n t l e n, s e r v e r l e n ; // Length o f c l i e n t address 8 struct sockaddr in // I n t e r n e t addr c l i e n t & s e r v e r 9 c l i e n t, s e r v e r ; 10 int len, i ; // Misc counters, e t c. 11 // Catch when c h i l d t erminates 12 struct hostent h o s t i n f o ; 13 FILE f i n ; 14 static char sha1buf [ BUFSIZ ] ; // f u e r Ergebnis sha1sum 15 i f ( s i g n a l (SIGCHLD, s i g n a l c a t c h e r ) == SIG ERR) { 16 p e r r o r ( SIGCHLD ) ; 17 return 1 ; 18 } 19 i f ( ( sock = s o c k e t (PF INET, SOCK DGRAM, 0) ) < 0) { 20 p e r r o r ( SERVER s o c k e t ) ; return 1 ; 21 } 22 memset(& s e rver, 0, sizeof ( s e r v e r ) ) ; // Clear s t r u c t u r e 23 s e r v e r. s i n f a m i l y = AF INET ; // Set address type 24 s e r v e r. s i n a d d r. s addr = htonl (INADDR ANY) ; 25 s e r v e r. s i n p o r t = htons ( 0 ) ; 26 // BIND 27 i f ( bind ( sock, ( struct sockaddr ) &s e r ver, 28 sizeof ( s e r v e r ) ) < 0) { 29 p e r r o r ( SERVER bind ) ; return 2 ; 30 } 31 s e r v e r l e n = sizeof ( s e r v e r ) ; // Obtain address l e n g t h 32 // Find p i c k e d port # 33 i f ( getsockname ( sock, ( struct sockaddr ) &s e r ver, 34 &s e r v e r l e n ) < 0) { 35 p e r r o r ( SERVER getsocketname ) ; return 3 ; 36 } 37 cout << Server using port << ntohs ( s e r v e r. s i n p o r t ) << endl ; do { 40 c l i e n t l e n = sizeof ( c l i e n t ) ; // s e t t he l e n g t h 41 memset ( buf, 0, BUFSIZ) ; // c l e a r the b u f f e r 42 i f ( ( l e n=recvfrom ( sock, buf, BUFSIZ, 0, // g e t t he c l i e n t s msg 43 ( struct sockaddr ) &c l i e n t, &c l i e n t l e n ) ) < 0) { 44 p e r r o r ( SERVER recvfrom ) ; 45 c l o s e ( sock ) ; return 4 ; 6

9 Sebastian Pape 21. Juli } memset ( sha1buf, 0x0, BUFSIZ) ; 49 s p r i n t f ( sha1buf, echo \ % s \ md5sum\n, buf ) ; 50 f i n = popen ( sha1buf, r ) ; 51 memset ( sha1buf, 0x0, BUFSIZ) ; 52 read ( f i l e n o ( f i n ), sha1buf, BUFSIZ) ; 53 cout << sha1sum << sha1buf ; i f ( ( sendto ( sock, sha1buf, s t r l e n ( sha1buf ),0, / send i t to c l i e n t / 56 ( struct sockaddr ) &c l i e n t, 57 sizeof ( struct sockaddr in ) ) ) < 0) 58 { 59 p e r r o r ( SERVER sendto ) ; 60 return 1 ; 61 } } while ( true ) ; // FOREVER 64 return 0 ; 65 } 66 void 67 s i g n a l c a t c h e r ( int t h e s i g ) { 68 s i g n a l ( t h e s i g, s i g n a l c a t c h e r ) ; // r e s e t 69 wait ( 0 ) ; // keep the zombies at bay 70 } Listing 7: client.4.cpp 1 #include l o c a l. h 2 int 3 main ( int argc, char argv [ ] ) { 4 int sock, // O r i g i n a l s o c k e t in c l i e n t 5 l e n ; // Misc. counter 6 s o c k l e n t s e r v e r l e n ; 7 struct sockaddr in 8 s e rver, c l i e n t ; // I n t e r n e t addr o f s e r v e r 9 struct hostent host ; // The h o s t ( s e r v e r ) i n f o 10 static char sha1buf [ BUFSIZ ] ; // f u e r Ergebnis sha1sum 11 // Abfrage auf 3 Argumente aendern 12 i f ( argc!= 3 ) { // Check cmd l i n e f o r h o s t name 13 c e r r << usage : << argv [ 0 ] << s e r v e r << # p o r t << endl ; 14 return 1 ; 15 } 16 i f (! ( host=gethostbyname ( argv [ 1 ] ) ) ) { 7

10 Sebastian Pape 21. Juli p e r r o r ( CLIENT gethostname ) ; return 2 ; 18 } // Set s e r v e r address i n f o 19 memset(& s e rver, 0, sizeof ( s e r v e r ) ) ; // Clear s t r u c t u r e 20 s e r v e r. s i n f a m i l y = AF INET ; // Address type 21 memcpy(& s e r v e r. sin addr, host >h addr, host >h length ) ; 22 s e r v e r. s i n p o r t = htons ( a t o i ( argv [ 2 ] ) ) ; 23 // SOCKET 24 i f ( ( sock=s o c k e t (PF INET, SOCK DGRAM, 0) ) < 0 ) { 25 p e r r o r ( CLIENT s o c k e t ) ; return 3 ; 26 } // Set c l i e n t address i n f o 27 memset(& c l i e n t, 0, sizeof ( c l i e n t ) ) ; // Clear s t r u c t u r e 28 c l i e n t. s i n f a m i l y = AF INET ; // Address type 29 c l i e n t. s i n a d d r. s addr = htonl (INADDR ANY) ; 30 c l i e n t. s i n p o r t = htons ( 0 ) ; 31 // BIND 32 i f ( bind ( sock, ( struct sockaddr ) &c l i e n t, 33 sizeof ( c l i e n t ) ) < 0) { 34 p e r r o r ( CLIENT bind ) ; return 4 ; 35 } 36 do { // Process 37 w r i t e ( f i l e n o ( stdout ), >, 3) ; 38 i f ( ( l e n=read ( f i l e n o ( s t d i n ), buf, BUFSIZ) ) > 0) { 39 s e r v e r l e n=sizeof ( s e r v e r ) ; 40 i f ( sendto ( sock, buf, s t r l e n ( buf ), 0, / send msg to s e r v e r / 41 ( struct sockaddr ) &s e r ver, s e r v e r l e n ) < 0 ) { 42 p e r r o r ( CLIENT sendto ) ; 43 c l o s e ( sock ) ; e x i t ( 5 ) ; 44 } 45 i f ( ( l e n=recvfrom ( sock, sha1buf, BUFSIZ, 0, / s e r v e r s message / 46 ( struct sockaddr ) &s e r ver, &s e r v e r l e n ) ) < 0) { 47 p e r r o r ( CLIENT recvfrom ) ; 48 c l o s e ( sock ) ; e x i t ( 6 ) ; 49 } 50 w r i t e ( f i l e n o ( stdout ), sha1buf, l e n ) ; / show msg to c l n t / 51 } 52 } while ( buf [ 0 ]!=. ) ; // u n t i l end o f i nput 53 c l o s e ( sock ) ; 54 return 0 ; 55 } 8

11 Sebastian Pape 14. Februar 2007 Interprozeßkommunikation Schlusstest Allgemeines Grundlage des Schlußtests sind die Programme server.cpp, client.cpp und local.h im Verzeichnis /home/ipc/klausur. Als Hilfsmittel erlaubt sind: Das Skript, eigene Aufzeichnungen, sämtliche Übungen einschließlich Lösungsvorschlägen und Beispielprogrammen in /home/ipc/ sowie alle Dokumentation, die auf rapunzel in Form von Manpages, Infopages, selbst bearbeiteten Aufgaben, etc. vorhanden ist. Jegliche Kommunikationsversuche - unabhängig davon, in welcher Form sie stattfinden - führen zum Ausschluss von der Prüfung. Um die nachfolgenden Aufgaben zu bearbeiten, führen Sie deshalb zunächst die folgenden Schritte durch: Setzen Sie die Rechte Ihres Homeverzeichnisses auf 700. (chmod 700 ) Legen Sie in Ihrem Homeverzeichnis ein Unterverzeichnis klausur an. (mkdir /klausur) Achten Sie bei der Bearbeitung der Aufgaben auf folgendes: Bearbeiten Sie die Aufgaben im Verzeichnis /klausur. Kommentieren Sie die notwendigen Änderungen knapp und aussagekräftig im Sourcecode. 1

12 Sebastian Pape 14. Februar 2007 Aufgabe Die vorliegenden Fragmente des Client/Server-Paars aus dem Verzeichnis /home/ipc/klausur sollen zu einem rudimentären Network Time Protokoll (NTP) - Client/Server vervollständigt werden. Mit Hilfe des NTP-Protokolls können zwei Rechner ihre Zeit synchronisieren. Dabei läuft die Zeitsynchronisation zwischen Client und Server vereinfacht wie folgt ab. Der Client schickt eine Nachricht mit seiner aktuellen Zeit (t1) an der Server. Dieser antwortet, indem er die Ankunftszeit des Pakets vom Client (t2) und den Zeitpunkt seiner Antwort (t3) an den Client zurückschickt. Mit dem Zeitpunkt des Eintreffens seiner Antwort beim Client (t4) ergeben sich so vier Zeitstempel. Aus diesen Zeitstempeln lassen sich nun zwei Größen bestimmen. Zum einen das Delay, also die Zeit, die die Nachrichten im Netz unterwegs waren, sowie das Offset, d.h. die Zeitspanne, worin die Uhren der Rechner differieren: delay = (t4 t1) (t3 t2) (t4 t3) + (t1 t2) offset = 2 Ergänzen Sie nun die Codefragmente zu einem rudimentären Network Time Protokoll (NTP) - Client/Server. Beachten Sie dabei folgende Hinweise: Client und Server sollen mittels UDP (verbindungslosen Sockets) miteinander kommunizieren; dabei soll der Server seine Portnummer zufällig wählen und anschließend ausgeben. Zeitstempel sollen mit der Funktion gettimeofday(struct timeval *restrict tp, void *restrict tz) erstellt werden, die entsprechenden Aufrufe befinden sich bereits in den Codefragmenten. Um die Zeitstempel zu verschicken soll die Struktur ntp timestamps verwendet werden. Sie besteht lediglich aus vier Zeitstempeln des Typs timeval und wird im File local.h definiert. Die Berechnungen von delay und offset im Client sind bereits vollständig. Beachten Sie die Kommentare im Quelltext, die Ihnen beim Aufbau des Programms helfen sollen. 2

13 Sebastian Pape 14. Februar 2007 Interprozeßkommunikation Lösungsvorschlag - Schlußtest Allgemeines Grundlage des Schlußtests sind die Programme server.cpp, client.cpp und local.h im Verzeichnis /home/ipc/klausur. Als Hilfsmittel erlaubt sind: Das Skript, eigene Aufzeichnungen, sämtliche Übungen einschließlich Lösungsvorschlägen und Beispielprogrammen in /home/ipc/ sowie alle Dokumentation, die auf rapunzel in Form von Manpages, Infopages, selbst bearbeiteten Aufgaben, etc. vorhanden ist. Jegliche Kommunikationsversuche - unabhängig davon, in welcher Form sie stattfinden - führen zum Ausschluss von der Prüfung. Um die nachfolgenden Aufgaben zu bearbeiten, führen Sie deshalb zunächst die folgenden Schritte durch: Setzen Sie die Rechte Ihres Homeverzeichnisses auf 700. (chmod 700 ) Legen Sie in Ihrem Homeverzeichnis ein Unterverzeichnis klausur an. (mkdir /klausur) Achten Sie bei der Bearbeitung der Aufgaben auf folgendes: Bearbeiten Sie die Aufgaben im Verzeichnis /klausur. Kommentieren Sie die notwendigen Änderungen knapp und aussagekräftig im Sourcecode. 1

14 Sebastian Pape 14. Februar 2007 Aufgabe Die vorliegenden Fragmente des Client/Server-Paars aus dem Verzeichnis /home/ipc/klausur sollen zu einem rudimentären Network Time Protokoll (NTP) - Client/Server vervollständigt werden. Mit Hilfe des NTP-Protokolls können zwei Rechner ihre Zeit synchronisieren. Dabei läuft die Zeitsynchronisation zwischen Client und Server vereinfacht wie folgt ab. Der Client schickt eine Nachricht mit seiner aktuellen Zeit (t1) an der Server. Dieser antwortet, indem er die Ankunftszeit des Pakets vom Client (t2) und den Zeitpunkt seiner Antwort (t3) an den Client zurückschickt. Mit dem Zeitpunkt des Eintreffens seiner Antwort beim Client (t4) ergeben sich so vier Zeitstempel. Aus diesen Zeitstempeln lassen sich nun zwei Größen bestimmen. Zum einen das Delay, also die Zeit, die die Nachrichten im Netz unterwegs waren, sowie das Offset, d.h. die Zeitspanne, worin die Uhren der Rechner differieren: delay = (t4 t1) (t3 t2) (t4 t3) + (t1 t2) offset = 2 Ergänzen Sie nun die Codefragmente zu einem rudimentären Network Time Protokoll (NTP) - Client/Server. Beachten Sie dabei folgende Hinweise: Client und Server sollen mittels UDP (verbindungslosen Sockets) miteinander kommunizieren; dabei soll der Server seine Portnummer zufällig wählen und anschließend ausgeben. Zeitstempel sollen mit der Funktion gettimeofday(struct timeval *restrict tp, void *restrict tz) erstellt werden, die entsprechenden Aufrufe befinden sich bereits in den Codefragmenten. Um die Zeitstempel zu verschicken soll die Struktur ntp timestamps verwendet werden. Sie besteht lediglich aus vier Zeitstempeln des Typs timeval und wird im File local.h definiert. Die Berechnungen von delay und offset im Client sind bereits vollständig. Beachten Sie die Kommentare im Quelltext, die Ihnen beim Aufbau des Programms helfen sollen. 2

15 Sebastian Pape 14. Februar 2007 Listing 1: client.cpp 1 #include l o c a l. h 2 int 3 main ( int argc, char argv [ ] ) { 4 int sock, 5 l e n ; 6 s o c k l e n t s e r v e r l e n ; 7 struct sockaddr in 8 s e rver, c l i e n t ; 9 struct hostent host ; 10 ntp timestamps t s ; 11 double delay, o f f s e t ; // Zahl der Argumente abfragen 14 i f ( argc!= 3 ) { 15 c e r r << usage : << argv [ 0 ] << s e r v e r << # p o r t << endl ; 16 return 1 ; 17 } // Kommunikation v o r b e r e i t e n i f (! ( host=gethostbyname ( argv [ 1 ] ) ) ) { 22 p e r r o r ( CLIENT gethostname ) ; return 2 ; 23 } // Set s e r v e r address i n f o 24 memset(& s e rver, 0, sizeof ( s e r v e r ) ) ; // Clear s t r u c t u r e 25 s e r v e r. s i n f a m i l y = AF INET ; // Address type 26 memcpy(& s e r v e r. sin addr, host >h addr, host >h length ) ; 27 s e r v e r. s i n p o r t = htons ( a t o i ( argv [ 2 ] ) ) ; // SOCKET 30 i f ( ( sock=s o c k e t (PF INET, SOCK DGRAM, 0) ) < 0 ) { 31 p e r r o r ( CLIENT s o c k e t ) ; return 3 ; 32 } // Set c l i e n t address i n f o 33 memset(& c l i e n t, 0, sizeof ( c l i e n t ) ) ; // Clear s t r u c t u r e 34 c l i e n t. s i n f a m i l y = AF INET ; // Address type 35 c l i e n t. s i n a d d r. s addr = htonl (INADDR ANY) ; 36 c l i e n t. s i n p o r t = htons ( 0 ) ; //BIND 39 i f ( bind ( sock, ( struct sockaddr ) &c l i e n t, 40 sizeof ( c l i e n t ) ) < 0) { 41 p e r r o r ( CLIENT bind ) ; return 4 ; 42 } // Z e i t s t e m p e l generieren, v e r s c h i c k e n und d i e Antwort entgegennehmen 3

16 Sebastian Pape 14. Februar gettimeofday(& t s. t1, 0) ; s e r v e r l e n=sizeof ( s e r v e r ) ; 49 i f ( sendto ( sock, &ts, sizeof ( t s ), 0, / send msg to s e r v e r / 50 ( struct sockaddr ) &s e r ver, s e r v e r l e n ) < 0 ) { 51 p e r r o r ( CLIENT sendto ) ; 52 c l o s e ( sock ) ; return 5 ; 53 } i f ( ( l e n=recvfrom ( sock, &ts, sizeof ( t s ), 0, / s e r v e r s message / 56 ( struct sockaddr ) &s e r ver, &s e r v e r l e n ) ) < 0) { 57 p e r r o r ( CLIENT recvfrom ) ; 58 c l o s e ( sock ) ; return 6 ; 59 } gettimeofday(& t s. t4, 0) ; // Verbindung s c h l i e s s e n 64 c l o s e ( sock ) ; // debug output 67 // cout << t s. t1. t v s e c << : << t s. t1. t v u s e c << endl ; 68 // cout << t s. t2. t v s e c << : << t s. t2. t v u s e c << endl ; 69 // cout << t s. t3. t v s e c << : << t s. t3. t v u s e c << endl ; 70 // cout << t s. t4. t v s e c << : << t s. t4. t v u s e c << endl ; // Berechnungen delay = ( double ) ( ( t s. t4. t v s e c t s. t1. t v s e c ) ( t s. t3. t v s e c t s. t2. t v s e c ) + 75 ( double ) ( ( t s. t4. t v u s e c t s. t1. t v u s e c ) ( t s. t3. t v u s e c t s. t2. t v u s e c ) ) / ) ; 76 o f f s e t = ( double ) ( ( ( t s. t4. t v s e c t s. t3. t v s e c ) ( t s. t2. t v s e c t s. t1. t v s e c ) + 77 ( double ) ( ( t s. t4. t v u s e c t s. t3. t v u s e c ) ( t s. t2. t v u s e c t s. t1. t v u s e c ) ) / ) /2) ; p r i n t f ( delay= %f \n, delay ) ; 80 p r i n t f ( o f f s e t= %f \n, o f f s e t ) ; 81 return 0 ; 82 } 1 #include l o c a l. h 2 void s i g n a l c a t c h e r ( int ) ; Listing 2: server.cpp 4

17 Sebastian Pape 14. Februar int 4 main ( ) { 5 int sock ; 6 s o c k l e n t c l i e n t l e n, s e r v e r l e n ; 7 struct sockaddr in 8 c l i e n t, s e r v e r ; 9 int l e n ; 10 struct hostent h o s t i n f o ; 11 ntp timestamps t s ; // S i g n a l c a t c h e r i f ( s i g n a l (SIGCHLD, s i g n a l c a t c h e r ) == SIG ERR) { 16 p e r r o r ( SIGCHLD ) ; 17 return 1 ; 18 } // Kommunikation v o r b e r e i t e n ; Portnummer z u f a e l l i g waehlen i f ( ( sock = s o c k e t (PF INET, SOCK DGRAM, 0) ) < 0) { 23 p e r r o r ( SERVER s o c k e t ) ; return 1 ; 24 } 25 memset(& s e rver, 0, sizeof ( s e r v e r ) ) ; // Clear s t r u c t u r e 26 s e r v e r. s i n f a m i l y = AF INET ; // Set address type 27 s e r v e r. s i n a d d r. s addr = htonl (INADDR ANY) ; 28 s e r v e r. s i n p o r t = htons ( 0 ) ; 29 // BIND 30 i f ( bind ( sock, ( struct sockaddr ) &s e r ver, 31 sizeof ( s e r v e r ) ) < 0) { 32 p e r r o r ( SERVER bind ) ; return 2 ; 33 } 34 s e r v e r l e n = sizeof ( s e r v e r ) ; // Obtain address l e n g t h 35 // Find p i c k e d port # 36 i f ( getsockname ( sock, ( struct sockaddr ) &s e r ver, 37 &s e r v e r l e n ) < 0) { 38 p e r r o r ( SERVER getsocketname ) ; return 3 ; 39 } cout << Server using port << ntohs ( s e r v e r. s i n p o r t ) << endl ; // E n d l o s s c h l e i f e in der d i e Anfragen entgegengenommen und b e a n t w o r t e t werden do { 46 c l i e n t l e n = sizeof ( c l i e n t ) ; // s e t t he l e n g t h 47 5

18 Sebastian Pape 14. Februar i f ( ( l e n=recvfrom ( sock, &ts, sizeof ( t s ), 0, / c l i e n t s message / 49 ( struct sockaddr ) &c l i e n t, &c l i e n t l e n ) ) < 0) { 50 p e r r o r ( CLIENT recvfrom ) ; 51 c l o s e ( sock ) ; return 4 ; 52 } gettimeofday(& t s. t2, 0) ; 55 cout << t s. t2. t v s e c << : << t s. t2. t v u s e c << endl ; 56 // k l e i n e Pause 57 srand ( time (NULL) ) ; 58 s l e e p ( ( rand ( ) %2)+1) ; 59 gettimeofday(& t s. t3, 0) ; i f ( sendto ( sock, &ts, sizeof ( t s ), 0, / send msg to c l i e n t / 62 ( struct sockaddr ) &c l i e n t, c l i e n t l e n ) < 0 ) { 63 p e r r o r ( SERVER sendto ) ; 64 c l o s e ( sock ) ; return 5 ; 65 } 66 } while ( true ) ; // FOREVER return 0 ; 69 } void 72 s i g n a l c a t c h e r ( int t h e s i g ) { 73 s i g n a l ( t h e s i g, s i g n a l c a t c h e r ) ; // r e s e t 74 wait ( 0 ) ; // keep the zombies at bay 75 } 6

19 Sebastian Pape 31. Juli 2007 Interprozesskommunikation Schlusstest Allgemeines Grundlage des Schlusstests sind die Programme server.cpp, client.cpp und local.h im Verzeichnis /home/ipc/klausur. Als Hilfsmittel erlaubt sind: Das Skript, Bücher, eigene Aufzeichnungen, sämtliche Übungen einschließlich Lösungsvorschlägen und Beispielprogrammen in /home/ipc/ sowie alle Dokumentation, die auf rapunzel in Form von Manpages, Infopages, selbst bearbeiteten Aufgaben, etc. vorhanden ist. Die Benutzung von Suchmaschinen oder des WWW ist nicht erlaubt. Jegliche Kommunikationsversuche - unabhängig davon, in welcher Form sie stattfinden - führen zum Ausschluss von der Prüfung. Um die nachfolgenden Aufgaben zu bearbeiten, führen Sie deshalb zunächst die folgenden Schritte durch: ˆ Setzen Sie die Rechte Ihres Homeverzeichnisses auf 700. (chmod 700 ) ˆ Legen Sie in Ihrem Homeverzeichnis ein Unterverzeichnis klausur.ss07 an. (mkdir /klausur.ss07) Online-Zugriff auf das Skript erhalten Sie, indem Sie auf ihrem Arbeitsrechner folgenden Befehl ausführen: evince Unseren Server erreichen Sie wie gewohnt mit: ssh [-X] 1

20 Sebastian Pape 31. Juli 2007 Achten Sie bei der Bearbeitung der Aufgaben auf folgendes: ˆ Kommentieren Sie die notwendigen Änderungen knapp und aussagekräftig im Sourcecode. ˆ Benutzen Sie bei den Aufgaben jeweils die Programme, die sich aus der vorhergehenden Teilaufgabe ergeben. ˆ Kopieren Sie nach dem Bearbeiten einer Teilaufgabe Ihr Programm in das Verzeichnis /klausur.ss07. Benennen Sie den Sourcecode und zugehöriges kompiliertes Programm dabei nach den Teilaufgaben: (server client). Aufgabennr.[cpp] also z.b. server.3.cpp bzw. die entsprechend kompilierte Version dann server.3. Alles außerhalb des Verzeichnisses /klausur.ss07 wird nicht für die Bewertung berücksichtigt. ˆ Beachten Sie die Kommentare im Quelltext, die Ihnen beim Aufbau des Programms helfen sollen. ˆ Benutzen Sie sofern vorhanden und sinnvoll die bereits in der Includedatei und den Quelldateien definierten Variablen. ˆ Geben Sie gesendete und empfangene Daten im Client und Server auf der Standardausgabe aus, um die Vorgänge transparent zu halten. ˆ Achten Sie darauf, dass Ihre Programme sich auch auf anderen Systemen als rapunzel wie gewünscht verhalten. 2

21 Sebastian Pape 31. Juli 2007 Aufgabe Mit den vorliegenden Fragmenten des Client/Server-Paars aus dem Verzeichnis /home/ipc/klausur soll das Prinzip eines FTP Server/Client-Paares stark vereinfacht nachgestellt werden. Aus Gründen der Übersichtlichkeit wandelt der Server jedoch nur alle Zeichenketten, die er erhält in Großbuchtaben um. Im Grundzustand sendet der Client die Eingabe an den Server und beendet sich, wenn das erste Zeichen ein Punkt ist. 1. Ändern Sie Server und Client so ab, dass sich der Client zum Server über einen festen Port verbindet. Benutzen sie als festen Port dabei plus die Nummer Ihres Arbeitsrechners, die Sie am Gehäuse finden. Ist z.b. die Nummer Ihres Arbeitsrechners 42, dann soll der Client eine Verbindung zu Port des Servers aufbauen. Ändern Sie weiterhin den Server so ab, dass er nach der Verbindung des Clients seine Systeminformationen an den Client sendet. Benutzen Sie dazu den Befehl uname -a. Geben Sie die Systeminformationen im Client aus. 2. Ändern Sie den Server derart ab, dass er auch mehrere Clients gleichzeitig bedienen kann. Nun sollen extra Datenverbindungen implementiert werden. Dabei sollen über die erste Verbindung (vom Client zum Server) die Befehle des Clients und die Bestätigungen des Servers gesendet werden im weiteren als Kommandoverbindung bezeichnet. Die Daten des Servers sollen über die neu anzulegende Datenverbindung gesendet werden. Der Ablauf soll dabei wie folgt sein: Der Client soll wie zuvor eine Verbindung zum Server aufbauen (Kommandoverbindung). Nun wartet der Client auf die Eingabe ACT oder PSV, um zu entscheiden, wie die Datenverbindung zum Server aufgebaut werden soll (siehe unten). Nach Eingabe des entsprechenden Kommandos wird die Datenverbindung aufgebaut. Alle weiteren Eingaben im Client werden über die Kommandoverbindung gesendet. Der Server quittiert den Empfang auf der Kommandoverbindung mit einem OK und sendet dann auf der Datenverbindung die in Großbuchstaben gewandelte Eingabe zurück. Hat der Client das OK erhalten, liest er die Datenverbindung und zeigt die Daten an. Die Befehlsstrings sind dabei in den Variablen COM * in der local.h definiert. 3

Rechnernetze. 6. Übung

Rechnernetze. 6. Übung Hochschule für Technik und Wirtschaft Studiengang Kommunikationsinformatik Prof. Dr. Ing. Damian Weber Rechnernetze 6. Übung Aufgabe 1 (TCP Client) Der ECHO Service eines Hosts wird für die Protokolle

Mehr

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen Kommunikationsnetze Gliederung 1. Socket-Programmierung unter C 2. Socket-Programmierung unter Java Gliederung Berkeley Sockets (Erste freie TCP/IP-Implementierung in Berkeley UNIX): SOCKET: Erzeugen eines

Mehr

Dienstspezifikation nach RFC 2396 193

Dienstspezifikation nach RFC 2396 193 Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname

Mehr

Lösung Übungszettel 6

Lösung Übungszettel 6 Lösungen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik SS 03 AG Betriebssysteme FB3 Kirsten Berkenkötter Lösung Übungszettel 6 1 Aufgabe 1: Parallel-Server 1.1 Client #include

Mehr

Tafelübung zu BS 4. Interprozesskommunikation

Tafelübung zu BS 4. Interprozesskommunikation Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 25 2 / 25 Pipes Die Bash kennt drei Standard-Dateideskriptoren: Standard In (stdin) Standard-Eingabe,

Mehr

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Betriebssysteme: Konzepte, Dienste, Schnittstellen (Betriebssysteme und betriebssystemnahe Programmierung)

Betriebssysteme: Konzepte, Dienste, Schnittstellen (Betriebssysteme und betriebssystemnahe Programmierung) BERGISCHE UNIVERSITÄT WUPPERTAL GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de Fachbereich C MATHEMATIK UND NATURWISSENSCHAFTEN Fachgruppe Mathematik

Mehr

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells. Übung 7 1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells. 2.) Charakterisieren Sie kurz das User Datagram Protokoll (UDP) aus der Internetprotokollfamilie

Mehr

Linux - a bit advanced

Linux - a bit advanced Linux - a bit advanced Überblick Rechteverwaltung Dateisystem Shell-Programmierung Remote login Paketsystem Alternativen-System Rechte Drei Benutzerklassen Owner/User Group Others Drei Rechte Ausführen

Mehr

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

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

Programmieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011. Timer. Sockets. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 26 Timer Sockets SMTP-Client 2 / 26 Timer Mit einem Timer können bestimmte Aktionen periodisch wiederkehrend durchgeführt

Mehr

Theoretische Aspekte

Theoretische Aspekte Webserver mit Win32 API Datum: 04.02.03 Autor: Michael Hielscher Homepage: www.genesis-x7.de Theoretische Aspekte Aufbau eines Webservers Als erstes sollte man im Abschnitt Multithreaded SocketServer nachlesen

Mehr

Übung zur Vorlesung Echtzeitsysteme

Übung zur Vorlesung Echtzeitsysteme Technische Universität München Fakultät für Informatik Forschungs- und Lehreinheit Informatik VI Übung zur Vorlesung Echtzeitsysteme Aufgabe 3 Nadine Keddis keddis@fortiss.org Stephan Sommer sommerst@in.tum.de

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Kapitel 4: Design von Client/Server-Software. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

Kapitel 4: Design von Client/Server-Software. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes Kapitel 4: Design von Client/Server-Software Definition: Client und Server Client Ein Client ist ein Dienstnutzer, der von einem Server aktiv einen Dienst anfordert und anschließend darauf wartet, dass

Mehr

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr. ls [optionen] [namen]: ls zeigt den Inhalt von Verzeichnissen. Sind keine namen angegeben, werden die Dateien im aktuellen Verzeichnis aufgelistet. Sind eine oder mehrere namen angegeben, werden entweder

Mehr

Anwendungsprotokolle: HTTP, POP, SMTP

Anwendungsprotokolle: HTTP, POP, SMTP Anwendungsprotokolle: HTTP, POP, SMTP TCP? UDP? Socket? eingesetzt, um Webseiten zu übertragen Zustandslos Nutzt TCP Client schickt Anfrage ( HTTP-Request ) an Server, Server schickt daraufhin Antwort

Mehr

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Client-Server mit Socket und API von Berkeley

Client-Server mit Socket und API von Berkeley Client-Server mit Socket und API von Berkeley L A TEX Projektbereich Deutsche Sprache Klasse 3F Schuljahr 2015/2016 Copyleft 3F Inhaltsverzeichnis 1 NETZWERKPROTOKOLLE 3 1.1 TCP/IP..................................................

Mehr

Übung 4: Schreiben eines Shell-Skripts

Übung 4: Schreiben eines Shell-Skripts Aufgabenteil 1 Ziel der Übung Übung 4: Schreiben eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende

Mehr

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung Computer and Communication Systems (Lehrstuhl für Technische Informatik) Socket-Programmierung [RN] Sommer 2012 Socket - Programmierung 1 Überblick Allgemeine Grundlagen für die Socket-Programmierung Elementare

Mehr

An Open Interface for Network Programming under Microsoft Windows. DI. Dr. Peter René Dietmüller

An Open Interface for Network Programming under Microsoft Windows. DI. Dr. Peter René Dietmüller Windows Sockets An Open Interface for Network Programming under Microsoft Windows DI. Dr. Peter René Dietmüller Institut für Informationsverarbeitung und Mikroprozessortechnik Johannes Kepler Universität

Mehr

Transmission Control Protocol (TCP)

Transmission Control Protocol (TCP) Transmission Control Protocol (TCP) Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt stream-orientiert bidirektional gehört zur Transportschicht, OSI-Layer 4 spezifiziert in RFC 793 Mobile

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

KONFIGURATION DES MOZILLA E-MAIL CLIENT

KONFIGURATION DES MOZILLA E-MAIL CLIENT KONFIGURATION DES MOZILLA E-MAIL CLIENT Copyright 2004 by 2 ways - media & design, Inh. Lars Plessmann, Paulinenstr. 12, D-70178 Stuttgart. http://www.2-ways.de Lars.Plessmann@2-ways.de Der Mozilla Email

Mehr

Beispiel Time Client/Server

Beispiel Time Client/Server Beispiel Time Client/Server /** * * Programmbeschreibung: * --------------------- * Dieses Programm ermittelt über eine TCP/IP-Verbindung die Uhrzeit eines * entfernten Rechners, wobei es sowohl die Rolle

Mehr

Client/Server-Systeme

Client/Server-Systeme Frühjahrsemester 2011 CS104 Programmieren II / CS108 Programmier-Projekt Java-Projekt Kapitel 3: /Server-Architekturen H. Schuldt /Server-Systeme Ein zweischichtiges /Server-System ist die einfachste Variante

Mehr

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden Dokument: gns_ipc_server.c, 1 - Seite 1 - - 1: 1 von 1 - Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden int main(int argc,

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Icinga Teil 2. Andreas Teuchert. 25. Juli 2014

Icinga Teil 2. Andreas Teuchert. 25. Juli 2014 Icinga Teil 2 Andreas Teuchert 25. Juli 2014 1 Nagios-Plugins Programme, die den Status von Diensten überprüfen können liegen in /usr/lib/nagios/plugins/ werden von Icinga aufgerufen, geben Status über

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

7 TCP/IP-Dienste konfigurieren

7 TCP/IP-Dienste konfigurieren 7 TCP/IP-Dienste konfigurieren In diesem Kapitel lernen Sie die Begriffe Ports,Sockets und Connections kennen (LPI 1: 109.1). den Zusammenhang der Ports von TCP/IP-Diensten mit der Datei /etc/services

Mehr

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise

Mehr

NAT und Firewalls. Jörn Stuphorn stuphorn@rvs.uni-bielefeld.de. Universität Bielefeld Technische Fakultät

NAT und Firewalls. Jörn Stuphorn stuphorn@rvs.uni-bielefeld.de. Universität Bielefeld Technische Fakultät NAT und Firewalls Jörn Stuphorn stuphorn@rvs.uni-bielefeld.de Universität Bielefeld Technische Fakultät Stand der Veranstaltung 13. April 2005 Unix-Umgebung 20. April 2005 Unix-Umgebung 27. April 2005

Mehr

Programmieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010. Sockets.

Programmieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010. Sockets. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 19 2 / 19 Über einen Socket kann eine Anwendung die Implementierung des Netzwerkprotokolls des darunter liegenden Betriebssystems

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Referat: Netzwerkprogrammierung in Java

Referat: Netzwerkprogrammierung in Java 1.)ISO/OSI und Internet Referenzmodell Referat: Netzwerkprogrammierung in Java ISO/OSI 7 Schichtenmodell (1-Bitübertragung, 2-Sicherung, 3-Netzwerk, 4-Transport, 5-Sitzung, 6- Darstellung, 7-Anwendung)

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

WinSCP Zugriff auf Daten des Uni-Netzwerkes

WinSCP Zugriff auf Daten des Uni-Netzwerkes WinSCP Zugriff auf Daten des Uni-Netzwerkes Robert Hillig 2013/03 1. Vorwort Das Universitätsnetzwerk ist von außen per SSH (Secure SHell) über login.tu-chemnitz.de auf Port 22 erreichbar. SSH ist ein

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main 2 Vorbemerkungen

Mehr

1 Überblick. A-Z SiteReader Benachrichtigung.doc Seite 1 von 9

1 Überblick. A-Z SiteReader Benachrichtigung.doc Seite 1 von 9 1 Überblick In A-Z SiteReader ist das Feature Benachrichtigung enthalten. Dieses Feature ermöglicht einer Installation, beim Auftreten von Ereignissen eine automatische Benachrichtigung für verschiedene

Mehr

Programmiermethodik. Übung 13

Programmiermethodik. Übung 13 Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering andreas.scharf@cs.uni-kassel.de Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java

Mehr

Moderne C-Programmierung

Moderne C-Programmierung Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete

Mehr

Wie man eigene Programme erstellt

Wie man eigene Programme erstellt Kapitel 3 Wie man eigene Programme erstellt In diesem Kapitel geht es darum, sich mit einem Compiler vertraut zu machen. Dabei erfahren Sie, wie Sie eigene Programme auf den Systemen Windows und Linux

Mehr

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder

Michael Golm, Universität Erlangen-Nürnberg, IMMD 4, 1999/2000 1999-12-20 14.51 / Tafelübung 7. Netzwerkkommunikation und Byteorder 7. Tafelübung Lösung der jsh-aufgabe Erläuterung der rshd-aufgabe Sockets 83 Netzwerkkommunikation und Byteorder Wiederholung: Byteorder big endian little endian 0 1 2 3 11 aa bb cc cc bb aa 11 0x11aabbcc

Mehr

Netzwerk Linux-Kurs der Unix-AG

Netzwerk Linux-Kurs der Unix-AG Netzwerk Linux-Kurs der Unix-AG Benjamin Eberle 5. Februar 2015 Netzwerke mehrere miteinander verbundene Geräte (z. B. Computer) bilden ein Netzwerk Verbindung üblicherweise über einen Switch (Ethernet)

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 23 Kapitel 16 Datei Aus- und Eingabe Seite 1 von 23 Datei Aus- und Eingabe - Für die Ausgabe auf Dateien und die Eingabe von Dateien werden die Streams ofstream und ifstream verwendet. - Sie sind in der Bibliothek

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Nachfolgend finden Sie die drei Aufgaben, die Sie als Zulassungsvoraussetzung für die Scheinklausur am 18.7.2001

Mehr

Sichere Programmierung in C 296

Sichere Programmierung in C 296 Sichere Programmierung in C 296 Systemnahe Software ist in vielen Fällen in Besitz von Privilegien und gleichzeitig im Kontakt mit potentiell gefährlichen Nutzern, denen diese Privilegien nicht zustehen.

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Alles Text Sockets à la Plan 9

Alles Text Sockets à la Plan 9 Alles Text Sockets à la Plan 9 Petra Gremeyer, Axel-Tobias Schreiner, Fachbereich Mathematik/Informatik, Universität Osnabrück Plan 9, das neue verteilte Betriebssystem der UNIX-Schöpfer, hat bekanntlich

Mehr

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe. Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Winter 2009/2010, 18. Februar 2010 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name:

Mehr

Übersicht. Generierung von IPv6-Paketen mit Scapy. Scapy GUI - Kurzvorstellung. Szameitpreiks - Beuth Hochschule für Technik Berlin

Übersicht. Generierung von IPv6-Paketen mit Scapy. Scapy GUI - Kurzvorstellung. Szameitpreiks - Beuth Hochschule für Technik Berlin Übersicht Generierung von IPv6-Paketen mit Scapy Scapy GUI - Kurzvorstellung Szameitpreiks - Beuth Hochschule für Technik Berlin 2 Scapy-GUI for IPv6 Generierung von IPv6- Paketen mit Scapy Szameitpreiks

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

UDP-, MTU- und IP- Fragmentierung

UDP-, MTU- und IP- Fragmentierung UDP-, MTU- und IP- Fragmentierung Jörn Stuphorn stuphorn@rvs.uni-bielefeld.de Universität Bielefeld Technische Fakultät Stand der Veranstaltung 13. April 2005 Unix-Umgebung 20. April 2005 Unix-Umgebung

Mehr

Teil 1: Ein einfacher Chat

Teil 1: Ein einfacher Chat Teil 1: Ein einfacher Chat Verteilte Systeme / Chat Der Weg ist das Ziel Im Laufe dieses Projektes werden Sie schrittweise ein Chat-Programm entwickeln. Dabei werden Sie einiges über den Aufbau des Internets

Mehr

4 Schleifen und Dateien

4 Schleifen und Dateien 4 Schleifen und Dateien 4.1 Übungsaufgabe 4.1.1 Aufgabe 1 Schreiben Sie drei C++ Programme: pword_for.cxx, pword_while.cxx, pword_do.cxx. Die Programme sollen den Benutzer höchstens 5 Mal nach einem Passwort

Mehr

TCP/UDP. Transport Layer

TCP/UDP. Transport Layer TCP/UDP Transport Layer Lernziele 1. Wozu dient die Transportschicht? 2. Was passiert in der Transportschicht? 3. Was sind die wichtigsten Protkolle der Transportschicht? 4. Wofür wird TCP eingesetzt?

Mehr

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Ein- und Ausgabe Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Komplexe E/A-Operationen werden erst diskutiert, nachdem das Klassenkonzept erarbeitet

Mehr

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen Informatik I Übung 2 : Programmieren in Eclipse 5. März 2014 Daniel Hentzen dhentzen@student.ethz.ch Downloads : http://n.ethz.ch/~dhentzen/download/ Heute 1. Nachbesprechung Übung 1 2. Theorie 3. Vorbesprechung

Mehr

L A TEX, Linux, Python

L A TEX, Linux, Python L A TEX, Linux, Python Daniel Borchmann, Tom Hanika, Maximilian Marx 17. Dezember 2014 cba Grundlagen von GNU/Linux Grundlagen von GNU/Linux Eine kurze Geschichte von GNU / Linux Eine kurze Geschichte

Mehr

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

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software FTP Übersicht Was ist FTP? Übertragungsmodi Sicherheit Öffentliche FTP-Server FTP-Software Was ist FTP? Protokoll zur Dateiübertragung Auf Schicht 7 Verwendet TCP, meist Port 21, 20 1972 spezifiziert Übertragungsmodi

Mehr

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene

Mehr

1.) Client-Server-Kommunikation

1.) Client-Server-Kommunikation 1.)... 1 2.) Der Server (Server I)... 1 3.) Der Client... 3 4.) Erweiterung mehrere Clients an einem Server (Server II)... 5 5.) Erweiterung Clientübersicht und Nachricht vom Server an nur einen Client

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Modul 123. E-Mail und FTP. Unit 6. E-Mail (pop / smtp), FTP (activ/passive Mode) FTP-Server mit Microsofts IIS

Modul 123. E-Mail und FTP. Unit 6. E-Mail (pop / smtp), FTP (activ/passive Mode) FTP-Server mit Microsofts IIS Modul 123 Unit 6 (V1.1) E-Mail und FTP Zielsetzung: E-Mail (pop / smtp), FTP (activ/passive Mode) FTP-Server mit Microsofts IIS Technische Berufschule Zürich IT Seite 1 Grundlagen : Das Store-and-Forward

Mehr

Eprog Starthilfe. 5. Oktober 2010. 1 Einleitung 2

Eprog Starthilfe. 5. Oktober 2010. 1 Einleitung 2 Eprog Starthilfe 5. Oktober 2010 Inhaltsverzeichnis 1 Einleitung 2 2 Windows 2 2.1 Cygwin Installation................................... 2 2.2 Programmieren mit Emacs............................... 8

Mehr

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P)

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Zum Selbststudium Foliensatz 0 Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P) Dr. Thomas Schaaf,

Mehr

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum /LQX[*UXQGODJHQ, (LQI KUXQJLQGLH6KHOO 'DWHLHQXQG 9HU]HLFKQLVVH :DVLVW]XWXQ" X Anmelden am System X System herunterfahren X Grundlegendes zur Shell X Das Hilfesystem X Dateioperationen X Bewegen im Verzeichnisbaum

Mehr

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Adressauflösung. IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18

Adressauflösung. IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18 Adressauflösung IP Adresse Physikalische Adresse 128.96.34.1 57:FF:AA:36:AB:11 128.96.34.16 85:48:A4:28:AA:18 IP Adresse Physikalische Adresse 128.96.34.15??? 128.96.34.16 85:48:A4:28:AA:18 128.96.34.15

Mehr

Socket-Programmierung (3)

Socket-Programmierung (3) Socket-Programmierung (3) E-Mails versenden Aufgabe: ein Programm schreiben, das E-Mails versenden kann Lernziele: - SMTP Kommandos - Authentifizierung - Passworteingabe (wxwidgets) - SMTP Ergebniscodes

Mehr

Übung: Entwickeln eines Shell-Skripts

Übung: Entwickeln eines Shell-Skripts Aufgabenteil 1 Ziel der Übung Übung: Entwickeln eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende

Mehr

Praktikum RO1 Einführung Linux / Ubuntu / Bash

Praktikum RO1 Einführung Linux / Ubuntu / Bash Praktikum RO1 Einführung Linux / Ubuntu / Bash Ubuntu Ubuntu 10.04 läuft als Gastsystem auf der virtuellen Maschine Virtuel Box. Das vorbereitete Ubuntu liegt auf der Festplatte Daten_1 ( \D:\VM'sUbuntu_10.04

Mehr

E-/A-Funktionalität nicht Teil der Programmiersprache

E-/A-Funktionalität nicht Teil der Programmiersprache C Ein-/Ausgabe C Ein-/Ausgabe C.1 Überblick E-/A-Funktionalität nicht Teil der Programmiersprache Realisisierung durch "normale" Funktionen Bestandteil der Standard-Funktionsbibliothek einfache Programmierschnittstelle

Mehr

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 1 Telnet und FTP

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 1 Telnet und FTP VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer Kommunikation I (Internet) Übung 1 Telnet und FTP SS 2003 Inhaltsverzeichnis 2. Übungen mit Telnet und FTP...1 2.1. Testen der Verbindung mit ping...1 2.2. Arbeiten

Mehr

Dateizugriff unter C

Dateizugriff unter C Begriffe Dateizugriff unter C Datei = sequentielle Ansammlung von Datenbytes, z.b. auf einer Festplatte Auch Bildschirm und Tastatur werden wie Dateien behandelt: Bildschirm ist die Datei stdout Tastatur

Mehr

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

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1) 1 FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1) In dieser Kurseinheit geht es um verteilte Anwendungen, bei denen wir sowohl ein Client- als auch ein

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Kommunikation im Netzwerk

Kommunikation im Netzwerk Kommunikation im Netzwerk Die Client-Server Beziehung Der Client stellt eine Frage (Request) an den Server, dieser sendet eine Antworte (Response) zurück. Grundlage ist die Verfügbarkeit von Sockets, die

Mehr

Prüfungsvorleistung Datenstrukturen

Prüfungsvorleistung Datenstrukturen Prüfungsvorleistung Datenstrukturen Allgemeine Hinweise Als Prüfungsvorleistung für die Klausur Datenstrukturen müssen Hausaufgaben gelöst werden. Jede Hausaufgabe wird mit einer bestimmten Anzahl an Punkten

Mehr

ab Redirector-Version 2.14

ab Redirector-Version 2.14 Installation: FilterSurf ab Redirector-Version 2.14 Hier werden nun die Schritte erläutert, die nacheinander zu durchlaufen sind, um einen der zentralen FilterSurf -Server verwenden zu können. Die Installationsschritte

Mehr

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST 2. Interaktive Web Seiten GET und POST Die Übertragungsmethoden GET und POST sind im http Protokoll definiert: POST: gibt an, dass sich weitere Daten im Körper der übertragenen Nachricht befinden: z.b.

Mehr