Socket-Programmierung unter Java

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

Transmission Control Protocol (TCP)

Java und Netzwerkkommunikation

Referat: Netzwerkprogrammierung in Java

Programmieren 2 Selbststudium Semesterwoche 6

Java Fehlerbehandlung

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java

Vorlesung Programmieren. Java I/O: Input und Output mit Java. Ein-/Ausgabe von Daten. Java I/O. Heute. Grundlage fast aller Programme

Java I/O, Serialisierung und Netzwerkprogrammierung

1. Netzwerkprogrammierung für mobile Geräte

Netzwerkprogrammierung & Threads

Netzwerkprogrammierung

Einführung zur Aufgabengruppe 2

TCP und UDP Sockets in Java

Advanced Network Programming

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren in Java

Java Input/Output System (IO)

4. Thread- und Netzwerk- Programmierung

Beispiel senden

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

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

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

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

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

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

2 Verbindungslose Kommunikation mit UDP

1. Mit dem Socket zum Server

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

Einführung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 14: Sequentielle Ein-/Ausgabe, Streams, Dateiorganisation.

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Beispiel Time Client/Server

Java I Vorlesung Exceptions

Software Entwicklung 1

Dr. Monika Meiler. Inhalt

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

Programmiermethodik. Übung 13

Programmieren 2 09 File-IO

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß

Networking. Motivation und Grundlagen Klasse Socket SMTP-Protokoll Exceptions. 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.

Java Schulung. Objektorientierte Programmierung in Java Teil VI: Wichtige Java Pakete. Prof. Dr. Nikolaus Wulff

Vorlesung SS 2001: Sicherheit in offenen Netzen

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

Teil 1: Ein einfacher Chat

Ein- und Ausgabe in Java

Vorlesung Programmieren

Dr. Monika Meiler. Inhalt

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

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

Netzprogrammierung: Kommunikation über Sockets

Rechnernetze. 6. Übung

Alles Text Sockets à la Plan 9

Dr. Monika Meiler. Inhalt

1. Netzwerkprogrammierung für mobile Geräte

Einstieg in die Informatik mit Java

Projektaufgabe Peer-To-Peer Chat Programm

Rechnernetze und verteilte Systeme Übungsblatt P

VS: Verteilte Systeme Kap. 02 Kommunikation Prinzipien und Realisierung mit Sockets. Wolfgang Wiedermann FH Regensburg FH. Teil 1

3. Grundlegende Sprachkonstruktionen imperativer Programme

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

UDP Datagramme und Sockets

Teil 1: Ein einfacher Chat

Distributed Computing Group

GUI Events. Entstehen bei jeder Eingabe über die Bedienoberfläche (Maus bewegen, Maus Tasten drücken, Tastatur,...

TCP/UDP. Transport Layer

Streams. Programmiermethodik. Eva Zangerle Universität Innsbruck

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes

Programmieren mit sockets

Modellierung und Programmierung 1

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

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

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

Ausgewählte Implementierungsprobleme

Seminarbericht Netzwerk-Programmierung mit MIDP 2.0

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Dr. Klaus Höppner

CS1024 Internetbasierte Systeme

Rechnernetze und verteilte Systeme Übungsblatt P

Domain Name Service (DNS)

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

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

2 Die Codierung Sehen wir uns mal den vereinfachten Weg der Informationen von der Tastatur aus bis zum Filesystem an:

NETZWERKPROGRAMMIERUNG IN JAVA

Vorlesung 11. Sitzung Grundlegende Programmiertechniken

Kommunikation und Synchronisation von Prozessen

Primitive Datentypen

Kommunikationsnetze 1. TCP/IP-Netze 1.2 TCP. University of Applied Sciences. Kommunikationsnetze. 1. TCP/IP-Netze 1.

Programmieren I und II

Programmieren in Java

Internetanwendungstechnik (Übung)

Internetprotokoll TCP / IP

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

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

Techniken der Projektentwicklung

Service Engineering. Einbindung von Web Services in eine Java-Anwendung. Prof. Dr. Andreas Schmietendorf 1. SoSe Service Engineering

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

Transkript:

Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende Reader und Writer für Textdaten, z.b. HTTP, Chat Verwende Streams für Binärdaten, z.b. Datei kopieren 2 Binärdatenströme (1) FileInputStream Lesen aus einer Datei PushbackInputStream erlaubt es, bereits gelesene Daten wieder zurückzuschieben, um sie erneut Lesen zu können DataInputStream machtvolle Klasse um alle Arten von Binärdaten ObjectInputStream erlaubt es Java-Objekte aus einem Strom zu lesen ( Serialization)... 3 Binärdatenströme (2) PrintStream erlaubt Schreiben von Text-Repräsentation von Standard-Datentypen FileOutputStream Schreibt in eine Datei PipedOutputStream Erlaubt es direkt in einen anderen InputStream zu schreiben ObjectOutputStream kann Java-Objekte in Strom schreiben 4

Binärdatenströme (3) Binärdatenströme (4) DataInputStream boolean readboolean() byte readbyte() char readchar() double readdouble() float readdouble() int readint() String readutf()... DataOutputStream writeboolean(boolean v) writebyte(int b) writeutf(string s) Unicode - 2 Byte pro Zeichen writebytes(string s) ASCII+ - 1 Byte pro Zeichen char readchar() double readdouble()... 5 6 Textdatenströme (1) BufferedReader mit Zwischenpuffer zum effiziente, zeilenweise Einlesen CharArrayReader Lesen einzelner UniCode-Zeichen FileReader Lesen aus einer Datei InputStreamReader Bildet einen InputStream auf einen Reader ab StringReader Bildet einen String auf einen Reader ab 7 Textdatenströme (2) PrintWriter erlaubt Schreiben von Text-Repräsentation von Standard-Datentypen FileWriter Schreibt in eine Datei OutputStreamWriter Bildet einen Writer auf einen OutputStream ab StringWriter Schreibt Daten in einen String... 8

Was sind s? -Programmierung unter Java 2 - Strom- und Datagrammsockets s sind Endpunkte einer Kommunikation zwischen zwei Endpunkten (Anwendungen auf Rechnern). s gehören zu einer Anwendung. s werden an eine Portnummer gebunden. s können an alle oder bestimmte IP-Adressen eines Rechners gebunden werden. s gibt es für TCP und UDP-Kommunikation. Unter Unix/Linux findet sich in /etc/services eine Auflistung von registrierten Portnummern. 10 Was sind s? vgl. mit realen Adressen: IP-Adresse Ort + Straße + Hausnummer Port Klingelknopf Anwendung Wohnung bekannte Portnummern: ftp: 21/tcp ssh: 22/tcp, 22/udp telnet: 23/tcp http: 80/tcp dns: 53/tcp, 53/udp 11 TCP / UDP Zwei Internet-Transportprotokolle: TCP und UDP UDP Übertragung von Paketen (Datagrammen) keine Garantie für Reihenfolge oder Vollständigkeit der Pakete beim Empfänger TCP Übertragung eines Bytestroms (intern Pakete) Reihenfolge und Vollständigkeit garantiert 12

Host A grober Ablauf (TCP) 1. A erstellt einen lokalen auf beliebigen Port und stellt eine Verbindung zu B auf Port 4000 her. 2. B nimmt die Verbindung entgegen, erzeugt einen mit bel. Portnummer und übergibt Verbindung. 21 50782 25 1. Internet 2. 80 4000 35871 Host B 13 java.net - InetAddress Klasse java.net.inetaddress Zum Zugriff auf IP (v4) Adressen unter JAVA (IPv6 angeblich ab Herbst 2001) String host = willy ; InetAddress server = null; try { server = InetAddress.getByName(host); catch (UnknownHostException uhe) { System.out.println( Ein Server namens +host+ ist unbekannt. ); 14 java.net - Exceptions Klasse BindException konnte nicht reserviert werden Klasse UnknownHostException IP-Adresse zu Hostnamen konnte nicht ermittelt werden Klasse NoRouteToHostException Die angegebene IP-Adresse kann nicht erreicht werden Klasse Exception Ein Fehler im unterliegenden Protokoll (z.b. TCP) ist aufgetreten. 15 Verwendung von Stream-s Server accept() InputStream OutputStream Server OutputStream InputStream Client Server wird an Port gebunden accept() wartet auf eingehende Verbindungen - liefert liefert Inputund OutputStream 16

Verwendung von Stream-s (2) Stream-s (Server) Anwendung A InputStream OutputStream OutputStream InputStream Anwendung B Aus Sicht des JAVA- Programmes wird die gesamte Kommunikation über Stream-Objekte abgewickelt. -Objekt bietet Methoden zum Zugriff auf Stream-Objekte getinputstream() getoutputstream() 17 (Achtung: In den Beispielen werden keine Exceptions abgefangen) Warte auf Port 4000 auf eingehende Verbindungen Server incom = new Server(4000); con = incom.accept(); Initialisiere Datenströme InputStream in = con.getinputstream(); OutputStream out = con.getoutputstream(); 18 Stream-s (Client) Baue Verbindung zu Server willy auf Port 4000 auf. try { con = new ( willy, 4000); InputStream in = con.getinputstream(); OutputStream out = con.getoutputstream(); catch (UnknownHostException uhe) { System.err.println( No such host ); catch (IOException ioe) { System.err.println( Could not connect. ); 19 Stream-s - Nützliches getlocaladdress() und getlocalport() liefern IP- Adresse und Portnummer des lokalen s getinetaddress() und getport() liefern dieselben Daten über den entfernten TCP-s zum Verarbeiten von Text lassen sich mittels telnet testen (telnet <server> <port>) 20

Text via Streams Text-Kommunikation mittels BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()); PrintWriter out = new PrintWriter(new OutputStreamWriter(sock.getOutputStream()); while (true) { String line = in.readline(); out.println( Du schriebst: +line); Nützliches: Textzerlegung Die Klasse java.util.stringtokenizer erlaubt das Zerlegen eines Strings anhand beliebiger Trennzeichen (z.b. Space, um einzelne Wörter zu erhalten). String line = Dies ist nur ein Beispiel ; StringTokenizer tok = new StringTokenizer(line, ); while (tok.hasmoretokens()) { System.out.println( --> +tok.nexttoken()); 21 22 Verwendung von Datagram-s Datagram (Sender) Anwendung A Datagram Datagram Datagram Datagram Anwendung B Datagrams haben Methoden zum Senden und Empfangen von Datagrammen write(datagram pack) receive(datagram pack) Datagram-Objekt enthält den zu schreibenden oder zu füllenden Bytebuffer Bei receive() muß vorher Platz für Daten reserviert werden 23 Erzeuge lokalen auf Port 4000 Datagram sock = new Datagram(4000); Sende Daten an willy Port 5000 InetAddress dest = InetAddress.getByName( willy ); byte[] mydata = new byte[4096]; DatagramPacket dp = new DatagramPacket(myData, mydata.length, dest, 5000); sock.send(dp); 24

Datagram (Empfänger) Erzeuge lokalen auf Port 5000 Datagram sock = new Datagram(4000); Erwarte Daten byte[] mydata = new byte[4096]; DatagramPacket dp = new DatagramPacket(myData, mydata.length); sock.receive(dp); // blockiert Daten stehen anschließend in mydata, die Anzahl der tatsächlich empfangenen Bytes in dp.getlength(). Datagrams - Nützliches Bei empfangenen DatagramPackets kann man mit getaddress() und getport() die IP-Adresse und Portnummer des Senders ermitteln. Variante Multicast: Erlaubt Gruppenkommunikation Alle Empfänger lauschen auf speziellen IP-Adressen Wenn einer an diese Adresse sendet, empfangen es alle Mehr in Rechnernetze 2 25 26 Übungsaufgaben Schreibe einen TCP Echo-Server (sendet die Daten, die er empfängt an der Absender zurück) für Texteingaben und teste diesen mit Telnet. Schreibe ein Server, der via UDP mehrere Bytes auf einmal empfängt, jedes einzeln bearbeitet (z.b. durch 2 teilt) und das Ergebnis wieder zurücksendet. 27