Socket-Programmierung in Java

Größe: px
Ab Seite anzeigen:

Download "Socket-Programmierung in Java"

Transkript

1 Socket-Programmierung in Java Abdelmajid Khelil Inhalt Das Referenzmodell für offene Systeme Kommunikationsprotokolle Socket-Definition TCP-Sockets UDP-Sockets Eigener TCP-Server Programmieren TCP Client-Server Beispiel UDP Client-Server Beispiel SMTP -Client Programmieren Arbeiten mit URLs Java Kompaktkurs Socket Programmierung 2

2 Das Referenzmodell für offene Systeme Java Kompaktkurs Socket Programmierung 3 Verbindungsarten Man unterscheidet in der Datenkommunikation zwischen zwei Arten von Protokollen: Verbindungsorientiert: (Telefon-System) Vor dem Austausch von Daten wird eine Verbindung zum Kommunikationspartner hergestellt. Hat meist einen höheren Verarbeitungsaufwand im Rechner. Drei Phasen sind notwendig: Verbindungsaufbau, Datentransfer, Verbindungsabbau Anwendungen: Datentransfer Verbindungslos (Post-System) Einzelne Nachrichten werden versendet. Transport von in sich abgeschlossenen Nachrichten (Datagramme), zustandslos. Hat meist einen höheren Verarbeitungsaufwand im Netz. Anwendungen: Datenbanken, transaktionale Systeme. Java Kompaktkurs Socket Programmierung 4

3 TCP/IP versus UDP/IP TCP (Transfer Control Protocol) Ein Verbindungsorientiertes Protokoll auf der Transportschicht (4). TCP ist eine sichere, strom-orientierte, bidirektionale Verbindung UDP (User Datagram Protocol) Verbindungsloses Protokoll auf der Transportschicht (4). UDP ist eine unsichere Verbindung für Paketverkehr. Unzuverlässig: Weder die Auslieferung noch deren Reihenfolge ist garantiert Schnell. IP (Internet Protocol) Verbindungsloses Protokoll auf der Vermittlungsschicht (3). Java Kompaktkurs Socket Programmierung 5 Ports Def. TCP und UDP Protokolle verwenden Ports, um eintreffende Daten zum betroffenen laufenden Prozess weiterzuleiten. Bekannte Services: ftp (tcp) 21 telnet (tcp) 23 smtp (tcp) 25 login (tcp) 513 Java Kompaktkurs Socket Programmierung 6

4 Verbindungsaufbau 1. Schritt 2. Schritt Java Kompaktkurs Socket Programmierung 7 Prinzip Der Server ruft bind und listen auf: Der Client ruft connect auf: Der Server ruft accept auf: Verbindungsarten: UDP (Datagram) TCP (Stream) Java Kompaktkurs Socket Programmierung 8

5 Definition Ein Socket (Steckdose, Buchse) ist eine Datenstruktur zur Administration von (Netzwerk-) Verbindungen. Ein Socket ist ein Endpunkt einer bidirektionalen Kommunikationsbeziehung zwischen zwei im Netz laufenden Programmen (Prozessen). Ein Socket ist mit einer Portnummer verbunden so, dass TCP- Schicht die Anwendung identifizieren kann, für die die Daten gesendet wurden. Richtung: Client Socket: Verbindung mit existierendem Dienst Server Socket: Stellt Dienst zur Verfügung Java Kompaktkurs Socket Programmierung 9 Warum Java Sockets? Zwei wichtige Vorteile gegenüber RMI: Kommunizieren mit nicht-java Objekten und Programmen. Kommunizieren mit Effizienz: Die Objektserialisierung erfordert einen erhöhten Rechenaufwand und führt zur Übertragung größerer Datenvolumen. Vorteile von RMI: RMI liefert mehr Flexibilität: Neue Klassen können von einem anderen Rechner dynamisch zur Applikation hinzugeladen werden. Java Kompaktkurs Socket Programmierung 10

6 TCP-Sockets TCP ist eine sichere, strom-orientierte, bidirektionale Verbindung. Als Endpunkte dienen ein Socket beim Klienten und ein ServerSocket beim Server. Die Ströme erhält man mit getinputstream() und getoutputstream(), Die Kommunikation erfolgt mit read() und write() Typische Anwendungsbeispiele sind die meisten Internet- Protokolle: FTP, HTTP, SMTP, TELNET Java Kompaktkurs Socket Programmierung 11 TCP-Sockets: die wichtigsten Klassen java.net.socket.serversocket.datainputstream.printstream.dataoutputstream.url.urlconnection Java Kompaktkurs Socket Programmierung 12

7 UDP-Sockets UDP: Universal ("unreliable") Datagram Protocol UDP ist eine unsichere Verbindung für Paketverkehr. Als Endpunkte dienen je ein DatagramSocket bei Klient und Server, über die DatagramPacket-Objekte mit send() verschickt und mit receive() empfangen werden. Die Paket-Größe ist limitiert. Typische Anwendungsbeispiele sind informative Internet-Protokolle wie DNS, NIS, TFTP sowie eine Variante der Remote Procedure Calls und darauf aufbauend NFS. Java Kompaktkurs Socket Programmierung 13 UDP-Sockets: die wichtigsten Klassen (1) java.net.datagrampacket Nur Aufbau von Datenstruktur, keine Verbindung! Wichtige Konstruktoren! DatagramPacket(byte[] buf, int length): Zum Empfang von length Bytes in buf! DatagramPacket(byte[] buf, int length, InetAddress address, int port): Zum Versenden von length Bytes aus buf an address und port Wichtige Methoden! byte[] getdata()! void setdata(byte[] buf)! int getlength()! void setlength(int length)! void setaddress(inetaddress iaddr)! void setport(int iport) Java Kompaktkurs Socket Programmierung 14

8 UDP-Sockets: die wichtigsten Klassen (2) java.net.datagramsocket Repräsentiert die eigentliche Verbindung Wichtige Konstruktoren! DatagramSocket()! DatagramSocket(int port) Wichtige Methoden! void send(datagrampacket p) throws IOException! void receive(datagrampacket p) throws IOException! void close() java.net.multicastsocket Ist vollständig von der oben beschriebenen Klasse DatagramSocket abgeleitet Für einen netzwerkweiten Datagram- Broadcast Java Kompaktkurs Socket Programmierung 15 Der Client (TCP) 1. Schritt: Ein Socket Objekt erzeugen (Öffnen eines Sockets): Socket Client = new Socket( hostname,portnumber); 2. Schritt: Ein output stream erzeugen, um Daten zu senden: PrintStream out = new PrintStream(Client.getOutputStream()); bzw. DataOutputStream out2 = new DataOutputStream(Client.getOutputStream()); 3. Schritt: Ein input stream erzeugen, um die Antwort des Servers zu empfangen: DataInputStream in = new DataInputStream(Client.getInputStream()); bzw. BufferedReader in = new BufferedReader( new InputStreamReader(Client.getInputStream())); 4. Schritt: Nutzdaten senden und empfangen. in.readline(); out.println(); aber out2.writebytes(); 5. Schritt: Ströme schließen: out.close(); in.close(); 6. Schritt: Socket schliessen: client.close(); Java Kompaktkurs Socket Programmierung 16

9 Der Server (TCP) 1. Schritt: Ein ServerSocket Objekt erzeugen: ServerSocket listensocket = new ServerSocket(portNumber); 2. Schritt: Ein Socket Objekt aus dem ServerSocket erzeugen: While (somecondition) { Socket server = listensocket.accept(); dosomethingwith(server); 3. Schritt: Ein input stream erzeugen: DataInputStream in = new DataInputStream(server.getInputStream()); 4. Schritt: Ein output stream erzeugen: PrintStream out = new PrintStream(server.getOutputStream()); 5. Schritt: Nutzdaten senden und empfangen. in.readline(); out.println(); 6. Schritt: Ströme schließen: out.close(); in.close(); 7. Schritt: Socket schliessen: server.close(); Java Kompaktkurs Socket Programmierung 17 Kompilieren und ausführen Kompilieren der java-quelldateien: javac Client.java javac Server.java Ausführen der Testszenarien TCP: Starten des Servers mit: java Server Starten des Clients (in einer zweiten Shell) mit: java Client Ggf. starten eines weiteren Clients. Beenden des Servers (mit Crtl-C). [UDP analog] Java Kompaktkurs Socket Programmierung 18

10 Eigener TCP-Server Programmieren Der Server Ist mit jedem Telnet-Client-Programm aufrufbar, Echot die Eingaben und Wird durch Eingabe der Zeichenfolge ciao beendet Damit dies Internet-weit erfolgen kann, muss der eigene Rechner über eine IP-Verbindung angeschlossen sein: Zu Testzwecken kann der Server zunächst mit dem Telnet-Client-Programm vom eigenen Rechner genutzt werden (TCP/IP-Protokoll muss allerdings installiert sein): telnet Der Ablauf Server-Programm mit Java erstellen Server auf dem eigenen Rechner starten und laufen lassen während der Server läuft, ist er im Internet über die Internet-Adresse und dem gewählten Port (im Beispiel 7788) erreichbar. Java Kompaktkurs Socket Programmierung 19 Eigener TCP-Server: SimpleServer.java Das Serverprogramm SimpleServer.java besteht aus zwei Klassen: SimpleServer Die zentrale Applikations-Klasse SimpleServer erstellt die Socket- Verbindungen zu "anrufenden" Verbindungen. Jede Telnet-Verbindung zu SimpleServer ist eine eigene SocketVerbindung. ServerThread Die Datenkommunikation über Eingabe- und Ausgabe-Streams erfolgt in der Klasse ServerThread. Würde die Datenkommunikation nicht als Thread ausgeführt, würde bereits die erste Kommunikationsverbindung den eigenen Server-Rechner vollständig belegen. Java Kompaktkurs Socket Programmierung 20

11 SimpleServer.java (1) In der Klasse SimpleServer wird eine Instanz ss von ServerSocket auf dem Port 7788 erstellt. Die Methode accept() von ServerSocket erwartet Client-Anfragen auf dem Server-Socket Liegt eine Anfrage vor, wird ein neuer Thread ServerThread gestartet, der die Client-Anforderung bedient (jede Socket- ServerSocket-Verbindung ist somit ein eigener Thread) Java Kompaktkurs Socket Programmierung 21 SimpleServer.java (2) import java.io.*; // import der Klassen für Streams import java.net.*; // import der Klassen für Netzwerkkommunikation public class SimpleServer { public static void main(string args[]) { int anz = 1; try { ServerSocket ss = new ServerSocket(7788); while(true) { Socket sverb = ss.accept(); System.out.println(" Verbindung " + anz); new ServerThread(sverb,anz).start(); anz++; catch (Exception e) { System.out.println(e); Java Kompaktkurs Socket Programmierung 22

12 SimpleServer.java (3) In der Klasse ServerThread wird eine Instanz sverb der Klasse Socket erstellt. Die Streams DataInputStream und PrintStream werden genutzt, zur Abwicklung der über die Socket-Verbindung eingehenden und ausgehenden Datenströme Java Kompaktkurs Socket Programmierung 23 SimpleServer.java (4) class ServerThread extends Thread { Socket sverb; int nverb; /* Konstruktor von ServerThread wird bei jeder neuen Verbindung aus SimpleServer aufgerufen */ ServerThread (Socket s, int n) { this.sverb = s; this.nverb = n; public void run () { try { /** Verwaltet den Eingabestream der Socketverbindung */ DataInputStream in =newdatainputstream(sverb.getinputstream()); /** Verwaltet den Ausgabestream der Socketverbindung */ PrintStream out =newprintstream(sverb.getoutputstream()); out.println( "Hallo - Willkommen beim Simple-Echo-Server!\r\n"); Java Kompaktkurs Socket Programmierung 24

13 SimpleServer.java (5) boolean weiter = true; while (weiter) { String str = in.readline(); if (str == null) weiter = false; else { out.println("enter ciao "+nverb+" : "+str); if (str.trim().equals("ciao")) weiter=false; // Ende if // Ende while sverb.close(); catch (IOException e) { System.out.println(e); // Ende run() // Ende SimpleServer Java Kompaktkurs Socket Programmierung 25 TCPClient.java (1) import java.io.*; import java.net.*; /** Testprogramm für einen TCP Client * Dem Client wird per Kommandozeile ein Satz eingegeben, der an den * Server gesendet wird. Nach erhalt der Antwort beendet sich der * Client. */ class TCPClient { /**Exceptions, die auftreten können, werden durchgereicht public static void main(string args[]) throws java.net.socketexception, java.io.ioexception { /** Nachricht, die an den Server geschickt wird */ String sentence; /** Nachricht, die vom Server empfangen wird */ String modifiedsentence; /** Objekt, dass Benutzerdaten einliest */ BufferedReader infromuser = new BufferedReader( new InputStreamReader(System.in)); Java Kompaktkurs Socket Programmierung 26

14 TCPClient.java (2) /** Stellt die Verbindung zum Server auf Port 6789 her. In diesem Fall läuft der Server auf dem gleichen Rechner wie der Client. */ Socket clientsocket = new Socket("localhost", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream()); /** Verwaltet den Eingabestream der Socketverbindung, 2. Möglichkeit*/ BufferedReader infromserver = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); /** Der Benutzer gibt einen Satz ein */ sentence = infromuser.readline(); Java Kompaktkurs Socket Programmierung 27 TCPClient.java (3) /* Der Satz wird über den Ausgabestream der Socketverbindung an den Server gesendet. */ outtoserver.writebytes(sentence +'\n'); /* Es wird auf die Nachricht vom Server gewartet und diese Empfangen */ modifiedsentence = infromserver.readline(); /* Die Antwort wird auf der Konsole ausgegeben */ System.out.println("FROM SERVER: "+ modifiedsentence); /* Der Client schliesst die Socketverbindung */ clientsocket.close(); // Programmende Java Kompaktkurs Socket Programmierung 28

15 TCPServer.java (1) import java.io.*; import java.net.*; /** Testprogramm für einen TCP Server Der Server empfängt Nachrichten, wandelt sie in Grossbuchstaben und sendet sie zurück. */ class TCPServer { public static void main(string args[]) throws java.net.socketexception, java.io.ioexception { /** Die vom Client gesendete Nachricht */ String clientsentence; /** Die Antwort fuer den Client */ String capitalizedsentence; /** Der Serverdienst wird auf Port 6789 aufgesetzt */ ServerSocket welcomesocket = new ServerSocket(6789); while(true) { /** Eingehende TCP Verbindungen werden an einen eigenen (virtuellen) Socket weitergereicht, über den die eigentliche Kommunikation stattfindet (Damit mehrere Anfragen gleichzeitig bearbeitet werden können, müsste dieser Teil durch Threads parallelisiert werden.) */ Socket connectionsocket = welcomesocket.accept(); Java Kompaktkurs Socket Programmierung 29 TCPServer.java (2) BufferedReader infromclient = new BufferedReader( new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outtoclient = new DataOutputStream( connectionsocket.getoutputstream()); clientsentence = infromclient.readline(); /* Wandele die Nachricht in Grossbuchstaben */ capitalizedsentence = clientsentence.touppercase() +'\n'; /* Sende die Antwort an den Client */ outtoclient.writebytes(capitalizedsentence); /* Der Server schliesst die Socketverbindung nicht. Weitere * Anfragen über diesen Socket werden jedoch nicht beachtet. */ // Ende der Schleife // Ende von main (wird nie erreicht) Java Kompaktkurs Socket Programmierung 30

16 UDPClient.java (1) import java.io.*; /* import der Klassen fuer Streams */ import java.net.*; /* import der Klassen fuer Netzwerkkommunikation */ /** Testprogramm fuer einen UDP Client. Dem Client wird per Kommandozeile ein Satz eingegeben, der an den Server gesendet wird. Nach erhalt der Antwort beendet sich der Client. */ class UDPClient { public static void main(string args[]) throws java.net.socketexception, java.io.ioexception { BufferedReader infromuser = new BufferedReader( new InputStreamReader(System.in)); /** Erstellt einen UDP Socket */ DatagramSocket clientsocket = new DatagramSocket(); /** Enthält die IP Adresse des Servers. In diesem Fall laeuft der * Server auf dem gleichen Rechner wie der Client. */ InetAddress IPAddress = InetAddress.getByName("localhost"); Java Kompaktkurs Socket Programmierung 31 UDPClient.java (2) byte[] senddata = new byte[1024]; /* Datenpuffer fuer ausgehende Pakete */ byte[] receivedata = new byte[1024]; /* Datenpuffer fuer eingehende Pakete */ String sentence = infromuser.readline(); /* Der Benutzer gibt einen Satz ein */ senddata = sentence.getbytes(); /* Der Satz wird in den Sendepuffer kopiert */ /* Aus dem Sendepuffer wird ein UDP Paket "geschnuert"; Zieladresse ist der UDPServer auf dem Port 9876 */ DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); /* das UDP Paket wird ueber Socket verschickt */ DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); /* Variable fuer eingehende UDP Pakete */ /* Warten auf eingehende UDP Pakete; weiter, wenn Paket eingetroffen */ clientsocket.receive(receivepacket); Java Kompaktkurs Socket Programmierung 32

17 UDPClient.java (3) /** Lese die Antwort des Servers aus dem emfangenem UDP Paket aus */ String modifiedsentence = new String(receivePacket.getData()); /* Die Antwort wird auf der Konsole ausgegeben */ System.out.println("FROM SERVER: " +modifiedsentence); /* Schliessen des Sockets */ clientsocket.close(); Java Kompaktkurs Socket Programmierung 33 UDPServer.java (1) import java.io.*;import java.net.*; /** Testprogramm fuer einen UDP Server * Der Server empfaengt Nachrichten, wandelt sie in Grossbuchstaben und * sendet sie zurueck. */ class UDPServer { public static void main(string args[]) throws java.net.socketexception, java.io.ioexception { /** Erstellt einen UDPSocket der auf Port 9876 Verbindungen entgegennimmt */ DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; /** Datenpuffer fuer eingehende Pakete */ byte[] senddata = new byte[1024]; /** Datenpuffer fuer ausgehende Pakete */ while(true){ /** Variable fuer eingehende UDP Pakete */ DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); Java Kompaktkurs Socket Programmierung 34

18 UDPServer.java (2) /* Warten auf eingehende UDP Pakete; weiter, wenn Paket eingetroffen */ serversocket.receive(receivepacket); /* Lese die Nachricht des Clients aus dem emfangenem UDP Paket aus */ String sentence = new String(receivePacket.getData()); /* Die IP Adresse des Clients */ InetAddress IPAddress = receivepacket.getaddress(); /* Der Port auf dem der Client erreichbar ist */ int port = receivepacket.getport(); String capitalizedsentence = sentence.touppercase(); /* Kopiere die Antwort in den Sendepuffer */ senddata = capitalizedsentence.getbytes(); /** "Schnüre" das Paket für den Client (seine IP Adresse und * Port wurden Zwischengespeichert) */ DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); /* Verschicke das Paket */ Java Kompaktkurs Socket Programmierung 35 SMTP Lieferung von Mails im Internet: Die Client-Maschine etabliert eine TCP-Verbindung zu Port 25 der Server- Maschine. An diesem Port befindet sich ein SMTP-Dämon (simple mail transfer protocol). Dämon akzeptiert eintreffende Verbindungen. Dämon kopiert -Nachrichten in Mailbox. Wenn die Nachricht nicht zulieferbar ist, ein Fehler-Bericht wird zum Sender zurückgegeben. Im folgenden ein SMTP-Client in Java Java Kompaktkurs Socket Programmierung 36

19 SMTP client (1) import java.io.*; import java.net.*; public class smtpclient { public static void main(string[] args) { Socket smtpsocket = null; DataOutputStream os = null; DataInputStream is = null; // Port 25 ist reserviert für SMTP try { smtpsocket = new Socket("hostname", 25); os = new DataOutputStream(smtpSocket.getOutputStream()); is = new DataInputStream(smtpSocket.getInputStream()); Java Kompaktkurs Socket Programmierung 37 SMTP client (2) catch (UnknownHostException e) { System.err.println("Don't know about host: hostname"); catch (IOException e) { System.err.println("Couldn't get I/O for the connection to: hostname"); // If everything has been initialized then we want to write some data // to the socket we have opened a connection to on port 25 if (smtpsocket!= null && os!= null && is!= null) { try { // The capital string before each colon has a special meaning to SMTP // you may want to read the SMTP specification, RFC1822/3 Java Kompaktkurs Socket Programmierung 38

20 SMTP client (3) os.writebytes("helo\n"); os.writebytes("mail From: os.writebytes("rcpt To: os.writebytes("data\n"); os.writebytes("from: os.writebytes("hi there\n"); // message body os.writebytes("\n.\n"); os.writebytes("quit"); // keep on reading from/to the socket till we receive the "Ok" from SMTP, // once we received that then we want to break. String responseline; while ((responseline = is.readline())!= null) { Java Kompaktkurs Socket Programmierung 39 SMTP client (4) System.out.println("Server: " + responseline); if (responseline.indexof("ok")!= -1) {break; os.close(); is.close(); smtpsocket.close(); catch (UnknownHostException e) { System.err.println("Trying to connect to unknown host: " + e); catch (IOException e) { System.err.println("IOException: " + e); Java Kompaktkurs Socket Programmierung 40

21 Arbeiten mit URLs URL (Uniform Resource Locator) ist Ein Verweis (Adresse) für eine Ressource im Internet Eine Klasse in java.net 1. Schritt: Erzeugen einer URL. URL meine_url = new URL("http://www.informatik.uni-stuttgart.de"); 2. Schritt: Öffnen einer Verbindung zur URL URLConnection url_connect = meine_url.openconnection(); 3. Schritt: Erhalten eines Ausgabestroms aus der Verbindung. (Dieser Ausgabestrom kann z.b. mit dem Standardeingabestrom des cgi-bin-skripts auf dem Server verbunden werden). DataInputStream dis = new DataInputStream(meine_url.openStream()) 4. Schritt: Schreiben in den Ausgabestrom. 5. Schritt: Schließen des Ausgabestroms. Java Kompaktkurs Socket Programmierung 41 URL- Beispiel (1) import java.io.*; import java.net.*; public class URLConnectionTest { public static void main(string[] args) { if (args.length == 0) { System.err.println("Usage: URLConnectionTest <host> [<user> <password>]"); return; try { URL url = new URL(args[0]); URLConnection connection = url.openconnection(); // set username, password if specified on command line Java Kompaktkurs Socket Programmierung 42

22 URL- Beispiel (2) // set username, password if specified on command line if (args.length > 2) { String username = args[1], password = args[2]; String encoding = base64encode(username + ":" + password); connection.setrequestproperty("authorization", "Basic " + encoding); connection.connect(); // print header fields String key; for (int n = 1; (key = connection.getheaderfieldkey(n))!= null; ++n) { String value = connection.getheaderfield(n); System.out.println(key + ": " + value); Java Kompaktkurs Socket Programmierung 43 URL- Beispiel (3) // print convenience functions System.out.println(" "); System.out.println("getContentType: " + connection.getcontenttype()); System.out.println("getContentLength: " + connection.getcontentlength()); System.out.println("getContentEncoding: " + connection.getcontentencoding()); System.out.println("getDate: " + connection.getdate()); System.out.println("getExpiration: " + connection.getexpiration()); System.out.println("getLastModifed: " + connection.getlastmodified()); System.out.println(" "); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); Java Kompaktkurs Socket Programmierung 44

23 URL- Beispiel (4) String line; // print first ten lines of contents for (int n = 1; (line = in.readline())!= null && n <= 10; ++n) System.out.println(line); if (line!= null) System.out.println("..."); catch (IOException e) { System.out.println(e); public static String base64encode(string s) { ByteArrayOutputStream bout = new ByteArrayOutputStream(); Base64OutputStream out = new Base64OutputStream(bOut); try { out.write(s.getbytes()); out.flush(); catch (IOException e) { return bout.tostring(); Java Kompaktkurs Socket Programmierung 45 URL- Beispiel (5) /* BASE64 encoding encodes 3 bytes into 4 characters Each set of 6 bits is encoded according to the tobase64 map. If the number of input bytes is not a multiple of 3, then the last group of 4 characters is padded with one or two = signs. Each output line is at most 76 characters. */ class Base64OutputStream extends FilterOutputStream { public Base64OutputStream(OutputStream out) { super(out); public void write(int c) throws IOException { inbuf[i] = c; i++; if (i == 3) { super.write(tobase64[(inbuf[0] & 0xFC) >> 2]); super.write(tobase64[((inbuf[0] & 0x03) << 4) ((inbuf[1] & 0xF0) >> 4)]); super.write(tobase64[((inbuf[1] & 0x0F) << 2) ((inbuf[2] & 0xC0) >> 6)]); super.write(tobase64[inbuf[2] & 0x3F]); Java Kompaktkurs Socket Programmierung 46

24 URL- Beispiel (6) col += 4; i=0; if (col >= 76) { super.write('\n'); col = 0; public void flush() throws IOException { if (i == 1) { super.write(tobase64[(inbuf[0] & 0xFC) >> 2]); super.write(tobase64[(inbuf[0] & 0x03) << 4]); super.write('='); super.write('='); Java Kompaktkurs Socket Programmierung 47 URL- Beispiel (7) else if (i == 2) { super.write(tobase64[(inbuf[0] & 0xFC) >> 2]); super.write(tobase64[((inbuf[0] & 0x03) << 4) ((inbuf[1] & 0xF0) >> 4)]); super.write(tobase64[(inbuf[1] & 0x0F) << 2]); super.write('='); private static char[] tobase64 = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', Java Kompaktkurs Socket Programmierung 48

25 URL- Beispiel (8) 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' ; private int col = 0; private int i = 0; private int[] inbuf = new int[3]; Ein Aufrufbeispiel ist java URLConnectionTest Java Kompaktkurs Socket Programmierung 49 Zusammenfassung Client-Server Programmierung in Java ist einfach. Das Package java.net stellt eine sehr mächtige und flexible Infrastruktur für Netzprogrammierung zur Verfügung. Die Packages Sun.* stellen auch sehr gute Klassen zur Verfügung, werden aber stetig aktualisiert und einige sind nicht portable. Java Kompaktkurs Socket Programmierung 50

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

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

1. Netzwerkprogrammierung für mobile Geräte

1. Netzwerkprogrammierung für mobile Geräte 1. Netzwerkprogrammierung für mobile Geräte Lernziele 1. Netzwerkprogrammierung für mobile Geräte Themen/Lernziele: Konzepte der verbindungslosen Kommunikation beherrschen Client/Server-Anwendungen auf

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

Netzwerkprogrammierung

Netzwerkprogrammierung Netzwerkprogrammierung 1 Netzwerkverbindungen Das Entwurfsziel von Java war: Einfache Verbindung zwischen Rechnern und SetBox-Systemen. Das Standardpaket java.net hilft bei allen Netzwerkverbindungen.

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

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

Advanced Network Programming

Advanced Network Programming 1 Advanced Network Programming Inhalt Netzwerkkommunikation Protokolle Verbindungsaufbau, -kontrolle, Datentransfer Socketprogrammierung TPC und UDP Client- und Serversockets verbindungsorientierte Server

Mehr

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Netzwerkprogrammierung PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker Steffen Helke, Marcus Mews Technische Universität Berlin Fachgebiet Softwaretechnik 17. Juni 2013 Übersicht Grundlagen

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

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

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze Vorlesung 16 Netzwerkprogrammierung 1 Netzwerkprogrammierung Mit Java-Programmen ist es möglich, Verbindungen über Netze aufzubauen Die Basisfunktionalität zur Netzwerkprogrammierung stellt das Paket java.net

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

Automatisierung von Java Anwendungen (9)

Automatisierung von Java Anwendungen (9) Abteilung für Wirtschaftsinformatik Automatisierung von Java Anwendungen (9) Bean Scripting Framework (BSF), 3 Sockets (Paket "java.net") Prof. Dr. Rony G. Flatscher Wirtschaftsuniversität Wien Augasse

Mehr

TCP/IP Socket Programmierung in C# (Ci sharp) Multicast und Broadcast

TCP/IP Socket Programmierung in C# (Ci sharp) Multicast und Broadcast TCP/IP Socket Programmierung in C# (Ci sharp) Multicast und Broadcast AUFGABE: Schreiben Sie das Beispiel in JAVA um Multicast und Broadcast Bei allen TCP Verbindungen handelt es sich um bidirektionale,

Mehr

Networking. Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL

Networking. Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL Networking Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Netzwerkprogrammierung in Java Programme schreiben,

Mehr

Beispiel E-Mail senden

Beispiel E-Mail senden Beispiel E-Mail senden E-Mail senden erfolgt nach dem SMTP-Protokoll auf Port 25 Das SMTP-Protokoll hat folgendes Format (RFC 821, RFC 2821) HELO Sendender Host MAIL FROM:

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 16 Rechnerkommunikation verteilte Systeme... 16-2 16.1 Netzwerktechnologie... 16-2 16.1.1 Adressen... 16-2 16.1.2 s und s... 16-3 16.2 Server/Client-Programmierung... 16-4 16.2.1 Aufbau einer Server/Client-Verbindung...

Mehr

4. Thread- und Netzwerk- Programmierung

4. Thread- und Netzwerk- Programmierung 4. Thread- und Netzwerk- Programmierung 4.1 Ziel dieses Kapitels 4.2 Prozeß versus Thread 4.3 Thread-Programmierung 4.4 TCP/IP Grundlagen 4.5 TCP Programmierung 3. TCP/IP und Threads 3-1 4.1 Ziel dieses

Mehr

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze Vorlesung 17 Netzwerkprogrammierung 1 Rückblick URL-Objekt Socket Verbindung zu einem Server aufbauen Webserver aus Clientsicht 2 Serverimplementation Server bauen keine eigene Verbindung auf, sondern

Mehr

1. Netzwerkprogrammierung für mobile Geräte

1. Netzwerkprogrammierung für mobile Geräte 1. Netzwerkprogrammierung für mobile Geräte Lernziele 1. Netzwerkprogrammierung für mobile Geräte Themen/Lernziele: Konzepte der verbindungslosen Kommunikation beherrschen Client/Server-Anwendungen auf

Mehr

1. Mit dem Socket zum Server

1. Mit dem Socket zum Server 1. Mit dem Socket zum Server Die URL-Verbindungen sind schon High-level-Verbindungen und wir müssen uns nicht erst um Übertragungsprotokolle wie HTTP oder noch tiefer TCP/IP kümmern. Aber alle höheren

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

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

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007 Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007 Name: Vorname: Matrikelnummer: Studiengang: E-Mail: Schreiben Sie zunächst sofort Ihren Namen und Matrikelnummer auf

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 16 Rechnerkommunikation verteilte Systeme... 16-2 16.1 Netzwerktechnologie... 16-2 16.1.1 Adressen... 16-2 16.1.2 s und s... 16-3 16.2 Server/Client-Programmierung... 16-5 16.2.1 Aufbau einer Server/Client-Verbindung...

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

15 Transportschicht (Schicht 4)

15 Transportschicht (Schicht 4) Netzwerktechnik Aachen, den 16.06.03 Stephan Zielinski Dipl.Ing Elektrotechnik Horbacher Str. 116c 52072 Aachen Tel.: 0241 / 174173 zielinski@fh-aachen.de zielinski.isdrin.de 15 Transportschicht (Schicht

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

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

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

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs 4. s Ein kleiner Einstieg Erinnerung: HTTP und HTML Idee von Web n und Containern Erstellung einfacher s (zunächst software technisch übelst unstrukturiert) Literatur: B. Basham, K. Sierra, B. Bates, Head

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

Networking. Motivation und Grundlagen Klasse Socket SMTP-Protokoll Exceptions. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Networking. Motivation und Grundlagen Klasse Socket SMTP-Protokoll Exceptions. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Networking Motivation und Grundlagen Klasse Socket SMTP-Protokoll Exceptions Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Networking Motivation und Grundlagen Sockets Klasse URL SMTP-Protokoll

Mehr

Java Remote Method Invocation (RMI)

Java Remote Method Invocation (RMI) Java Remote Method Invocation (RMI) Alexander Petry 13. Mai 2003 engl.: Entfernter Methodenaufruf 1 Übersicht 1. Einleitung 2. RMI Interfaces und Klassen 3. Parameterübergabe 4. Dynamisches Nachladen von

Mehr

UDP Datagramme und Sockets

UDP Datagramme und Sockets In diesem Kapitel: Was ist ein UDP Datagramm Die DatagrammPacket Klasse Die DatagrammSocket Klasse Höhere Abstraktionslevel Anwendungsbeispiele 9 UDP Datagramme und Sockets 9.1. Einführung In den beiden

Mehr

TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg

TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg TCP-Sockets in Java und C Hochschule Regensburg Vorlesung 4, 25.04.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Ziel: Threads sollen unabhängig von ihrer Position kommunizieren

Mehr

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

TCP/IP Programmierung. C# TimeServer Java6 TimeClient TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16 Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7

Mehr

Networking. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Networking. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Networking Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Networking Grundlagen Klasse Socket Klasse ServerSocket Klasse URL Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 2 Netzwerkprogrammierung

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

Verteilte Systeme Prof. Dr. Stefan Fischer. Übersicht. Interprozess-Kommunikation. TU Braunschweig Institut für Betriebssysteme und Rechnerverbund

Verteilte Systeme Prof. Dr. Stefan Fischer. Übersicht. Interprozess-Kommunikation. TU Braunschweig Institut für Betriebssysteme und Rechnerverbund TU Braunschweig Institut für Betriebssysteme und Rechnerverbund Übersicht Interprozess-Kommunikation Direkte Nutzung des Netzwerk-API vs. Middleware TCP und UDP Sockets TCP und UDP Clients und Server in

Mehr

Name: Matr.-Nr.. Aufgaben: Punkte erreicht. 1. Klient mit Socket 6. 2. Server mit Sockets 9. 3. Java RMI 6. 4. Klienten und Server 4. 5. PHP 9.

Name: Matr.-Nr.. Aufgaben: Punkte erreicht. 1. Klient mit Socket 6. 2. Server mit Sockets 9. 3. Java RMI 6. 4. Klienten und Server 4. 5. PHP 9. FU Berlin WS 08/09 Nachklausur Netzprogrammierung: Lösungen Maximale Punktzahl: 45 Minimale Punktzahl: 22 Name: Matr.-Nr.. Die Klausur dauert 90 Minuten. Bitte schreiben sie auf jedes Blatt Ihre Matrikelnummer.

Mehr

Übungen zu Rechnerkommunikation

Übungen zu Rechnerkommunikation Übungen zu Rechnerkommunikation Sommersemester 2013 Übung 3 Abdalkarim Awad, Jürgen Eckert, und Andreas Mosthaf Prof. Dr.-Ing. Reinhard German Friedrich-Alexander Universität Erlangen-Nürnberg Informatik

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

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

TCP/IP-Protokollfamilie

TCP/IP-Protokollfamilie TCP/IP-Protokollfamilie Internet-Protokolle Mit den Internet-Protokollen kann man via LAN- oder WAN kommunizieren. Die bekanntesten Internet-Protokolle sind das Transmission Control Protokoll (TCP) und

Mehr

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

Rechnernetze II WS 2012/2013. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Rechnernetze II WS 2012/2013 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 5. Mai 2014 Betriebssysteme / verteilte Systeme Rechnernetze

Mehr

Anhang A - Weitere Bibliotheken. Die Bibliothek Mail_02.lib ermöglicht das Versenden von Emails mit dem Ethernet-Controller 750-842.

Anhang A - Weitere Bibliotheken. Die Bibliothek Mail_02.lib ermöglicht das Versenden von Emails mit dem Ethernet-Controller 750-842. Anhang A - Weitere Bibliotheken WAGO-I/O-PRO 32 Bibliothek Mail_02.lib Die Bibliothek Mail_02.lib ermöglicht das Versenden von Emails mit dem Ethernet-Controller 750-842. Inhalt Mail_02.lib 3 MAIL_SmtpClient...

Mehr

Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP)

Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) Anwendungsschicht Das Web: Hypertext Transfer Protocol (HTTP) HTML Conditional GET Authentifizierung Cookies File Transfer Protocol (FTP) E-Mail SMTP Nachrichtenformat Zugriffsprotokolle Socket-Programmierung

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum

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

3.5 SSL Verbindungen. JSSE (Java Secure Socket Extension) import javax.net.ssl.* Wesentliche Pattern) Änderung im Client Programm: (Factory.

3.5 SSL Verbindungen. JSSE (Java Secure Socket Extension) import javax.net.ssl.* Wesentliche Pattern) Änderung im Client Programm: (Factory. 3.5 SSL Verbindungen JSSE (Java Secure Socket Extension) import javax.net.ssl.* Wesentliche Pattern) Änderung im Client Programm: (Factory Ersetze Socket s = new Socket (hostname, portnumber) durch SSLSocketFactory

Mehr

Internetprotokoll TCP / IP

Internetprotokoll TCP / IP Internetprotokoll TCP / IP Inhaltsverzeichnis TCP / IP - ALLGEMEIN... 2 TRANSPORTPROTOKOLLE IM VERGLEICH... 2 TCP / IP EIGENSCHAFTEN... 2 DARPA MODELL... 3 DIE AUFGABEN DER EINZELNEN DIENSTE / PROTOKOLLE...

Mehr

Was ist ein Netzwerk? Informatik B - Objektorientierte Programmierung in Java. Vorlesung 22: Netzwerkprogrammierung/ Kommunikation 1.

Was ist ein Netzwerk? Informatik B - Objektorientierte Programmierung in Java. Vorlesung 22: Netzwerkprogrammierung/ Kommunikation 1. Universität Osnabrück 1 Was ist ein Netzwerk? 3 - Objektorientierte Programmierung in Java Vorlesung 22: Netzwerkprogrammierung/ Kommunikation 1 SS 2004 Prof. Dr. F.M. Thiesing, FH Dortmund Verbindung

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

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

15 Ein-/Ausgabe 15-1. Kommunikation. Dateien. Schreiben und Lesen von Dateien. Sockets. Übungsaufgaben

15 Ein-/Ausgabe 15-1. Kommunikation. Dateien. Schreiben und Lesen von Dateien. Sockets. Übungsaufgaben 15 Ein-/Ausgabe 15-1 Inhalt Kommunikation Dateien Schreiben und Lesen von Dateien Übersetzung von Unicode in lokale Codierungen Dateien im Netz Sockets Übungsaufgaben Dateien Vielleicht sollten wir zuerst

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Techniken der Projektentwicklung

Techniken der Projektentwicklung Themen Threading Netzwerk Techniken der Projektentwicklung Threading & Netzwerkprogrammierung Ingo Lütkebohle Termin 13 Ingo Lütkebohle Techniken der Projektentwicklung 1 Themen heute Themen Threading

Mehr

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte

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

KN 20.04.2015. Das Internet

KN 20.04.2015. Das Internet Das Internet Internet = Weltweiter Verbund von Rechnernetzen Das " Netz der Netze " Prinzipien des Internet: Jeder Rechner kann Information bereitstellen. Client / Server Architektur: Server bietet Dienste

Mehr

Kommunikation und Synchronisation von Prozessen

Kommunikation und Synchronisation von Prozessen Kommunikation und Synchronisation von Prozessen 1. Hintergrundinformation 2. Umsetzungsmöglichkeiten Teil 1 Hintergrundinformation Grundansatz Vorspanntext Lehrplan 12.2: Betrachtet werden Situationen

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

Netzprogrammierung: URL-Schemata

Netzprogrammierung: URL-Schemata Netzprogrammierung: URL-Schemata Robert Tolksdorf und Peter Löhr Überblick 1. Vereinheitlichte Dienstnutzung in Java 3 2. Eigene URL-Schemata 24 3. Push- und Pull-Interaktion 28 Robert Tolksdorf und Peter

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

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0 Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0 Die Beitragssatzdatei in der Version 5.0 wird nur über https Download auf einer frei zugänglichen Webseite auf den folgenden Seiten bereitgestellt.

Mehr

Vorlesung SS 2001: Sicherheit in offenen Netzen

Vorlesung SS 2001: Sicherheit in offenen Netzen Vorlesung SS 2001: Sicherheit in offenen Netzen 2.2 Transmission Control Protocol - TCP 2.3 User Datagram Protocol - UDP Prof. Dr. Christoph Meinel Informatik, Universität Trier & Institut für Telematik,

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Praktikum Datenbanken und verteilte Systeme Sommersemester 2015

Praktikum Datenbanken und verteilte Systeme Sommersemester 2015 Sommersemester 2015 Tutorial 1 Datenbankzugriff für die Server-Anwendung 2 1.1 Squirrel SQL-Client 2 1.2 Java-Client mit JDBC unter Eclipse 2 2 Entwicklung einfacher Client-Server-Anwendungen 4 2.1 Entwicklung

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

NETZWERKPROGRAMMIERUNG IN JAVA

NETZWERKPROGRAMMIERUNG IN JAVA In diesem Kapitel: Was ist ein Server Socket? Die ServerSocket Klasse Aufbau eines Servers einige Server Beispiele 8 Sockets für Server 8.1. Was ist ein Server Socket? In diesem Kapitel beschreiben wir

Mehr

Computeranwendung in der Chemie Informatik für Chemiker(innen) 5. Internet

Computeranwendung in der Chemie Informatik für Chemiker(innen) 5. Internet Computeranwendung in der Chemie Informatik für Chemiker(innen) 5. Internet Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL5 Folie 1 Dr. Jens Döbler Internet Grundlagen Zusammenschluß

Mehr

Angewandte IT-Sicherheit

Angewandte IT-Sicherheit Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:

Mehr

Web (Site) Engineering (WebE)

Web (Site) Engineering (WebE) 1 / 41 Web (Site) Engineering (WebE) Vorlesung 2: Übertragungstechniken und Protokolle B. Schiemann Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 28.10.2008 2 / 41 Übersicht ISO/OSI Referenzmodell

Mehr

Chapter 11 TCP. CCNA 1 version 3.0 Wolfgang Riggert,, FH Flensburg auf der Grundlage von

Chapter 11 TCP. CCNA 1 version 3.0 Wolfgang Riggert,, FH Flensburg auf der Grundlage von Chapter 11 TCP CCNA 1 version 3.0 Wolfgang Riggert,, FH Flensburg auf der Grundlage von Rick Graziani Cabrillo College Vorbemerkung Die englische Originalversion finden Sie unter : http://www.cabrillo.cc.ca.us/~rgraziani/

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

E.1 Object Request Brokers

E.1 Object Request Brokers E Überblick über die 4. Übung E Überblick über die 4. Übung 1 Komponenten eines ORBs Lösungsskizze Aufgabe 2 RPC und ORB Aufrufsemantiken Hinweise Aufgabe 3 Kommunikationsschicht: tauscht Daten zwischen

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste

Mehr

CS1024 Internetbasierte Systeme

CS1024 Internetbasierte Systeme CS1024 Internetbasierte Systeme Bachelor of Science (Informatik) Einleitung Internet und Netzwerk-Programmierung Th Letschert IBS Einleitung Seite 2 Th Letschert IBS Dozent Dr. Th. Letschert Lernziele

Mehr

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007 Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung

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

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

E-Mail. Nachrichtenübertragung. Internetkommunikation Christof Fox. Wie werden Nachrichten Übertragen?

E-Mail. Nachrichtenübertragung. Internetkommunikation Christof Fox. Wie werden Nachrichten Übertragen? E-Mail Nachrichtenübertragung 1 Wie werden Nachrichten Übertragen? Über Protokolle: SMTP (Simple Mail Transfer Protocol) POP3 (Post Office Protocol Version 3) IMAP (Internet Message Access Protocol) 2

Mehr

TCP/IP Protokollstapel

TCP/IP Protokollstapel TCP/IP Protokollstapel IP: Hauptaufgabe ist das Routing (Weglenkung) und Adressierung IP ist ein ungesichertes, verbindungsloses Protokoll Arbeitet auf Schicht 3 UDP: User Datagram Protocol UDP ist ein

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus

Java I/O. Input / Output stream Library Regelt I/O über verschiedene Kanäle. Führt notwendige Umwandlungen/Konvertierungen aus Java I/O Input / Output stream Library Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus 1 Furchtbar viele Klassen BufferedInputStream

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

Ein- und Ausgabe in Java

Ein- und Ausgabe in Java Ein- und Ausgabe in Java Das Package java.io enthält eine Sammlung von Klassen, die die Kommunikation mit dem Computer steuern Einlesen und Ausgeben von Dateien Ausgabe auf dem Bildschirm Einlesen von

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Netzprogrammierung: Kommunikation über Sockets

Netzprogrammierung: Kommunikation über Sockets Netzprogrammierung: Kommunikation über Sockets Robert Tolksdorf und Peter Löhr Überblick Internet-Dienste und -Protokolle IP-Adressen und Rechnernamen Portnummern Kommunikation über Sockets TCP UDP Multicast

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung String Operationen i = 25 text1 = "Ich bin " text2 = " Jahre alt" print (text1 + str(i) + text2) print ("ich bin", i, "Jahre alt") print ("ich bin %s Jahre alt" % i) >>> Ich bin 25

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

Verteilte Systeme CS5001

Verteilte Systeme CS5001 Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,

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