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

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

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

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

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

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

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

Ü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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Input / Output in C, C++ Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Page 1 Ausgaben in C,C++ - generell Fuer C basierte Ausgaben:

Mehr

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404

Rechnernetze II SS 2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II SS 2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 14. Juli 2015 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

boost::asio-bibliothek 238

boost::asio-bibliothek 238 boost::asio-bibliothek 238 Die von Christopher M. Kohlhoff seit 2003 entwickelte Bibliothek bietet eine für C++ geeignete Schnittstelle auf Basis der BSD-Sockets. Das bedeutet, dass prinzipiell auch alle

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

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Apache Module (C API)

Apache Module (C API) Uni Köln - HKI HS: Verteilte Systeme Dozent: Prof. Manfred Thaller Referent: Dennis Heinz Apache Module (C API) Das HTTP Protokoll Beispiel einer einfachen Anfrage: GET /irgend/ein/dokument.html HTTP/1.1

Mehr

Grafische Benutzeroberfläche mit fltk

Grafische Benutzeroberfläche mit fltk Grafische Benutzeroberfläche mit fltk Prof. Dr. Rethmann & Jochen Peters 7. Oktober 2015 Inhaltsverzeichnis 1 Einleitung 2 2 fltk 1.3.x 2 2.1 Installation..................................... 3 2.1.1 Linux....................................

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

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

Domain Name Service (DNS)

Domain Name Service (DNS) Domain Name Service (DNS) Aufgabe: den numerischen IP-Adressen werden symbolische Namen zugeordnet Beispiel: 194.94.127.196 = www.w-hs.de Spezielle Server (Name-Server, DNS) für Listen mit IP-Adressen

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

21 Netzwerkprogrammierung mit Sockets

21 Netzwerkprogrammierung mit Sockets 302 21 Netzwerkprogrammierung mit Sockets Das Socket-API liegt zwischen den transportorientierten und den anwendungsorientierten Netzwerkschichten und tritt in der Praxis in 2 Formen auf: Ursprünglich

Mehr

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel

Netzwerkprogrammierung mit Sockets und C. Ulrich Vogel Netzwerkprogrammierung mit Sockets und C Ulrich Vogel Netzwerkprogrammierung mit Sockets und C von Ulrich Vogel Dieses Tutorial ist eine Einführung in die Netzwerkprogrammierung mit Hilfe von Sockets.

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

Projektaufgabe Peer-To-Peer Chat Programm

Projektaufgabe Peer-To-Peer Chat Programm Projektaufgabe Peer-To-Peer Chat Programm Betreuer: Dipl. Ing. Thomas Kehrt kehrt@cs.tu-dortmund.de September 10, 2014 1 Einführung Im Rahmen des Vorkurses wird für fortgeschrittene Studenten eine Projektarbeit

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

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

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

Java programmieren: Konsolen-Programme

Java programmieren: Konsolen-Programme Java programmieren: Es war einmal vor langer Zeit in einer weit entfernten Galaxis ok, das ist etwas übertrieben. In den Anfängen der Personal Computer in den 1980er sahen Computer noch etwa so aus: Diese

Mehr

U8-3 Netzwerkkommunikation und Byteorder. U8-2 Evaluation. U8-4 Sockets. U8-1 Überblick. Wiederholung: Byteorder. 0 1 2 3 14 a2 b5 c8 0x14a2b5c8

U8-3 Netzwerkkommunikation und Byteorder. U8-2 Evaluation. U8-4 Sockets. U8-1 Überblick. Wiederholung: Byteorder. 0 1 2 3 14 a2 b5 c8 0x14a2b5c8 U8 8. Übung U8 8. Übung U8-3 Netzwerkkommunikation und Byteorder U8-3 Netzwerkkommunikation und Byteorder U8-1 Überblick Wiederholung: Byteorder Besprechung der Miniklausur Online-Evaluation big endian

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

Grundkurs Routing im Internet mit Übungen

Grundkurs Routing im Internet mit Übungen Grundkurs Routing im Internet mit Übungen Falko Dressler, Ursula Hilgers {Dressler,Hilgers}@rrze.uni-erlangen.de Regionales Rechenzentrum der FAU 1 Tag 4 Router & Firewalls IP-Verbindungen Aufbau von IP

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen. Python Unter Windows empfiehlt sich der Download von Python unter folgender URL, http:// www.python.org/download/. Linux Distributionen wie z.b. Ubuntu liefern Python direkt in Ihrer Paketverwaltung mit:

Mehr

R e m o t e A c c e s s. Cyrus Massoumi

R e m o t e A c c e s s. Cyrus Massoumi R e m o t e A c c e s s Präsentation im Seminar Internet-Technologie im Sommersemester 2008 von Cyrus Massoumi I n h a l t Was versteht man unter Remote Access Unsichere Remotezugriffe TELNET Remote Shell

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5.

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. www.heimetli.ch. Heimetli Software AG HSWModule........ Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. August 2005 Inhaltsverzeichnis Was ist HSWModule?... 1 Installation...

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

182. stdio. 183. stdio. Eingabe. Ausgabe. Typisch für Zeileneingabe und Analyse: #include

182. stdio. 183. stdio. Eingabe. Ausgabe. Typisch für Zeileneingabe und Analyse: #include <stdio.h> 182. stdio Eingabe int getchar (), getc (FILE * fp), fgetc (FILE * fp); char * gets (char * buf), * fgets (char * buf, int len, FILE * fp); int scanf (const char * fmt,...); int fscanf (FILE * fp, const

Mehr

Rechnernetze und verteilte Systeme Übungsblatt P

Rechnernetze und verteilte Systeme Übungsblatt P Fakultät für Informatik Lehrstuhl 4 Dr. Jan Kriege Wintersemester 2014/15 Dipl.-Inf. Christoph Borchert Rechnernetze und verteilte Systeme Übungsblatt P Ausgabe: 17. November 2014, Abgabe: 11. Januar 2015

Mehr

7.11.2006. int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) {

7.11.2006. int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) { Universität Mannheim Lehrstuhl für Praktische Informatik 1 Prof. Dr. Felix C. Freiling Dipl.-Inform. Martin Mink Dipl.-Inform. Thorsten Holz Vorlesung Angewandte IT-Sicherheit Herbstsemester 2006 Übung

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme Grundkurs C++ Buildsysteme Buildsysteme Beispielhaftes Übersetzungsszenario: Verzeichnis tutorial7/ main.cpp, lcdrange.cpp, lcdrange.h *.cpp Kompilieren *.o *.h Grundkurs C++ 2 Headerdateien //blackbox.h

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

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

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

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

2 Verbindungslose Kommunikation mit UDP

2 Verbindungslose Kommunikation mit UDP 2 Verbindungslose Kommunikation mit UDP Das User Datagram Protocol (UDP) stellt grundlegende Funktionen zur Verfügung, um mit geringem Aufwand Daten zwischen kommunizierenden Prozessen austauschen zu können.

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

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

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

SSH. Nun brauchen wir noch das passwd-file. Dieses erstellen wir mit folgendem Befehl: mkpasswd -k -u marco >>..\etc\passwd

SSH. Nun brauchen wir noch das passwd-file. Dieses erstellen wir mit folgendem Befehl: mkpasswd -k -u marco >>..\etc\passwd SSH 1 Grundlagen... 1 2 Authentifizierung... 1 3 Installation von OpenSSH for Windows... 1 3.1 Anmeldung mit Schlüsselpaar... 3 4 SSH-Tunnel... 4 4.1 Funktionsweise... 5 4.2 Remote-Desktop durch einen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Praktikum Internetprotokolle - POP3

Praktikum Internetprotokolle - POP3 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik/Rechnernetze 19. Mai 2008 1 Aufgabenstellung Praktikum

Mehr

netcat Johannes Franken

netcat Johannes Franken <jfranken@jfranken.de> netcat Johannes Franken Auf dieser Seite zeige ich Anwendungsbeispiele für netcat, ein Kommandozeilentool zum Erstellen von Netzverbindungen über tcp oder udp. Inhalt 1. Verwendungszweck

Mehr

Lab 13: Multi Processor Systems II

Lab 13: Multi Processor Systems II Lab 13: Multi Processor Systems II 1. Können Sie sich erklären warum die Summe nicht 200% ergibt? Warum entspricht die Auslastung nicht 100% pro Prozessor? 100% ist die gesamte Auslastung vom System alle

Mehr

Remote Tools. SFTP Port X11. Proxy SSH SCP. christina.zeeh@studi.informatik.uni-stuttgart.de

Remote Tools. SFTP Port X11. Proxy SSH SCP. christina.zeeh@studi.informatik.uni-stuttgart.de Remote Tools SSH SCP Proxy SFTP Port X11 christina.zeeh@studi.informatik.uni-stuttgart.de Grundlagen SSH Inhalt Remote-Login auf marvin Datentransfer Graphische Anwendungen Tunnel VPN SSH für Fortgeschrittene

Mehr

shri Raw Sockets Prof. Dr. Ch. Reich

shri Raw Sockets Prof. Dr. Ch. Reich shri Raw Sockets Prof. Dr. Ch. Reich Szenario: Verschicken einer gespooften Ping-Message IP-Source-Adresse ist Adresse des Opfers Nachrichtenformat: IP-Header (normal, außer IP-Source-Address ist einstellbar)

Mehr

Vorlesung SS 2001: Sicherheit in offenen Netzen

Vorlesung SS 2001: Sicherheit in offenen Netzen Vorlesung SS 2001: Sicherheit in offenen Netzen 2.13 File Transfer Protocol - FTP Prof. Dr. Christoph Meinel Informatik, Universität Trier & Institut für Telematik, Trier Prof. Dr. sc. nat. Christoph Meinel,

Mehr

World4You Internet Service GmbH. Hafenstrasse 47-51, A-4020 Linz office@world4you.com

World4You Internet Service GmbH. Hafenstrasse 47-51, A-4020 Linz office@world4you.com Hafenstrasse 47-51, A-4020 Linz Inhaltsverzeichnis S C H R I T T 1 : DOWNLOAD... 3 S C H R I T T 2 : SETUP... 3 S C H R I T T 3 : EINSTELLUNGEN... 6 S C H R I T T 4 : DATENÜBERTRAGUNG... 7 S C H R I T

Mehr

Anleitung VPN am IDS (Testbetrieb im Rahmen des Projekts Forschungsinfrastruktur)

Anleitung VPN am IDS (Testbetrieb im Rahmen des Projekts Forschungsinfrastruktur) Anleitung VPN am IDS (Testbetrieb im Rahmen des Projekts Forschungsinfrastruktur) Stand 5. Mai 2010 Inhaltsverzeichnis Hinweise zur VPN-Nutzung...1 VPN-Client installieren...3 VPN-Client starten...9 VPN-Verbindung

Mehr

open (PIPE, " /usr/lib/sendmail -t") or die "sendmail open failed"; print PIPE "From: testuser\@desy.de\n"; print PIPE "To:

open (PIPE,  /usr/lib/sendmail -t) or die sendmail open failed; print PIPE From: testuser\@desy.de\n; print PIPE To: open (PIPE, " /usr/lib/sendmail -t") or die "sendmail open failed"; print PIPE "From: testuser\@desy.de\n"; print PIPE "To: wolfgang.friebel\@desy.de\n"; print PIPE "Subject: test of service\n\n"; print

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

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

Einführung in die Programmierung mit Qt

Einführung in die Programmierung mit Qt Einführung in die Programmierung mit Qt Dr. Ralf Schüler 5.11.2009 Was ist Qt? sprich: [kju:t] Klassenbibliothek für C++ (ferner Java, Python u.a.) sehr umfangreich: GUI, Stringverarbeitung, reguläre Ausdrücke,

Mehr

DynDNS für Strato Domains im Eigenbau

DynDNS für Strato Domains im Eigenbau home.meinedomain.de DynDNS für Strato Domains im Eigenbau Hubert Feyrer Hubert Feyrer 1 Intro homerouter$ ifconfig pppoe0 pppoe0: flags=8851...

Mehr

Netzwerkprogrammierung & Threads

Netzwerkprogrammierung & Threads & Threads Praktikum aus Softwareentwicklung 2 Netzwerp. - 1 & Threads URL, URLConnection, UDP, TCP Threads Parallele Programme, Synchronisation, Netzwerp. - 2 Grundlagen (1/2) Kommunikation zwischen verteilten

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

Betriebssystem Windows - SSH Secure Shell Client

Betriebssystem Windows - SSH Secure Shell Client Betriebssystem Windows - SSH Secure Shell Client Betriebssystem Windows - SSH Secure Shell Client... 1 Download... 2 Installation... 2 Funktionen... 3 Verbindung aufbauen... 3 Verbindung trennen... 4 Profile...

Mehr

POP3 und SMTP live und schwarzweiß

POP3 und SMTP live und schwarzweiß POP3 und SMTP live und schwarzweiß Informatik S2 In diesem Arbeitsauftrag empfangen und senden Sie E-Mails so, wie es auch ein E-Mail- Programm machen würde. Das heißt, Sie benutzen die Protokolle auf

Mehr

Kommunikation in Netzwerken Teil 2

Kommunikation in Netzwerken Teil 2 Client-Server Teil 2-1/37 3.6.2006 Kommunikation in Netzwerken Teil 2 Barbara Leipholz-Schumacher Euregio-Kolleg, Würselen Konfiguration des SMTP-Servers postfix (Linux) main.cf Client-Server Teil 2-2/37

Mehr

DHCP und dynamischer Update eines DNS

DHCP und dynamischer Update eines DNS DHCP und dynamischer Update eines DNS Als Voraussetzung für diese Dokumentation wird eine funktionierende Konfiguration eines DNS Servers, mit den entsprechenden Zonefiles angenommen. Die hier verwendete

Mehr

1 Linux-Befehlsübersicht

1 Linux-Befehlsübersicht 1 Linux-Befehlsübersicht 1.1 Dateiverwaltung ls Verzeichnisinhalt anzeigen (list) ls -l ausführliche Darstellung ls -a auch versteckte Dateien auisten ls -h verwende besser lesbare Einheiten (humanreadable,

Mehr

Effizienz im Vor-Ort-Service

Effizienz im Vor-Ort-Service Installation: Anleitung SatWork Integrierte Auftragsabwicklung & -Disposition Februar 2012 Disposition & Auftragsabwicklung Effizienz im Vor-Ort-Service Disclaimer Vertraulichkeit Der Inhalt dieses Dokuments

Mehr

Von SystemC zum FPGA in 7 Schritten. Kurzes Tutorial für die Synthese von SystemC Entwürfen auf dem ISMS Server der Hochschule

Von SystemC zum FPGA in 7 Schritten. Kurzes Tutorial für die Synthese von SystemC Entwürfen auf dem ISMS Server der Hochschule Von SystemC zum FPGA in 7 Schritten Kurzes Tutorial für die Synthese von SystemC Entwürfen auf dem ISMS Server der Hochschule Bremen. Mirko Kruse 21. November 2004 Inhalt 1 Einleitung...1 2 Benötigte Software...1

Mehr

Codingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008

Codingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008 I. Einleitung II. Codingstandard Softwareentwicklung Praktikum Stand: 27.02.2008 Wie in der Vorlesung schon ausgeführt wurde, ist die Lesbarkeit und Wartbarkeit des Sourcecodes ein sehr wichtiges Kriterium

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

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

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 9.1.2013 IAM Institut für Angewandte Mathematik Fortgeschrittene Ein- und Ausgabe Bisher: Ein- und Ausgabe nur über die Kommandozeile Erweiterung: Konzept

Mehr

3 Nameserver Registrieren, Abfragen und Ändern eines Nameserver(Host)-Handles

3 Nameserver Registrieren, Abfragen und Ändern eines Nameserver(Host)-Handles 1. Allgemeines Über die SGAP-Schnittstelle lassen sich folgende Anträge stellen: 1 Person(Contact)-Handle Registrieren, Abfragen und Ändern eines Contact-Handles. 2 Domain-Name Registrieren, Abfragen,

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

DATEIÜBERTRAGUNGS- PROTOKOLLE

DATEIÜBERTRAGUNGS- PROTOKOLLE DATEIÜBERTRAGUNGS- PROTOKOLLE KV Sicherheit in Applikationsprotokollen Florian Ströbitzer 11 Inhalt 1. TFTP Trivial File Transfer Protocol... 2 1.1. Übertragungsmodi... 2 1.2. Das Protokoll... 3 2. FTP

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Erste Schritte mit HG 2

Erste Schritte mit HG 2 Erste Schritte mit HG 2 Malte Ried FH-Gießen Version: 1.0 21. November 2003 Inhaltsverzeichnis 1 Einführung 2 2 Allgemeines 2 2.1 Koordinaten...................................... 2 2.2 Farben.........................................

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr