Java I/O, Serialisierung und Netzwerkprogrammierung

Ähnliche Dokumente
Verteilte Systeme - Java Networking (Sockets) -

Java Input/Output System (IO)

Socket-Programmierung unter Java

Socket-Programmierung unter Java

Datenströme in Java. Zeichenkonvertierung

Objektserialisierung

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung

1 Byteströme. 2 Spezialisierungen von Strömen. Lösungsskizze Aufgabe 1. Hinweise Aufgabe 2. Streams (Ein-/Ausgabe) Sockets (Netzwerkprogrammierung)

Kapitel 8: Serialisierbarkeit

B.2 Das Java Ein-/Ausgabesystem

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme

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

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

Java und Netzwerkkommunikation

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

Programmieren 2 Selbststudium Semesterwoche 6

TCP und UDP Sockets in Java

Programmieren I. Kapitel 15. Ein und Ausgabe

Netzwerkprogrammierung & Threads

Network Communication. Dr. Jürgen Eckerle WS 06/07

Umleitung von Datenströmen

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Netzwerkprogrammierung mit Java

Referat: Netzwerkprogrammierung in Java

Kommentare, Client-Server, Protokolle

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Java Einführung IO (Eingabe/Ausgabe)

Programmieren 2 11 Objekt-Serialisierung

Advanced Network Programming

Programmieren I und II

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

Java Fehlerbehandlung

Dynamische Datenstrukturen Jiri Spale, Algorithmen und Datenstrukturen - Dynamische Datenstrukturen 1

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

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS12) Java RMI 1 1

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

Transmission Control Protocol (TCP)

Verbindungen zu mehreren Clients. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 23: Netzwerkprogrammierung/ Kommunikation 2

Handbuch konsultieren!

Software Entwicklung 1

Vorlesung Programmieren

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Grundlegende Java Bibliotheken

Netzwerkprogrammierung mit Java

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Einführung in die OOP mit Java Character-Streams Gliederung

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

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

1 Klassen anlegen und Objekte erzeugen

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Programmieren 2 12 Netzwerke

Transkript:

Java I/O, Serialisierung und Netzwerkprogrammierung Philipp Güttler 16. Dezember 2009 Universität Ulm, Abt. SGI Progwerkstatt

2 19 Gliederung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Grundlagen Java I/O Datenströme Erweiterung java.nio Serialisierung Grundlagen Serialisierung Erweiterungen Netzwerkprogrammierung Verbindungsorientierter Ansatz Verbindungsloser Ansatz höhere Abstraktionsebene Literatur

3 19 Grundlagen Java I/O Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Datenströme Abstraktion von Ein- und Ausgabe von Daten byteorientierte Streams (java.io.inputstream/outputstream) textorientierte Streams (java.io.reader/writer) Umwandlung über Adapterklassen (java.io.inputstreamreader/outputstreamwriter) Quelle: Java Tutorials - Basic I/O

4 19 Grundlagen Java I/O Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Beispiele für Datenströme Print-, Buffered-, File-, Objekt-Streams,... 1 BufferedReader in = 2 new BufferedReader ( 3 new InputStreamReader ( System. in )); 4 5 BufferedWriter out = 6 new BufferedWriter ( 7 new OutputStreamWriter ( System. out )); 8 9 String text = in. readline (); 10 out. write (text, 0, text. length ()); 11 in. close (); out. close ();

5 19 Grundlagen Java I/O Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 RandomAccessFile wahlfreien Zugriffe innerhalb einer Datei Verhalten wie ByteArray mit Indexposition Lesen und Schreiben (r, rw,..) mit gleichem Objekt möglich Byte wie auch Character-Operationen java.io.file für Dateireferenz und Operationen auf dem Dateisystem (mkdir, rename)

6 19 Grundlagen Java I/O Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Probleme Streams unterschiedliche Ströme für Eingabe/Ausgabe strombasierte IO blockiert Ausführung read() springt erst zurück, wenn Daten gelesen (write() analog) Optimierung durch z.b. BufferedReader, Einsatz von Threads kaum Kontrolle über verwendete Buffer ineffizient durch Kopiervorgänge (BS/JVM) Sperrung von Dateien nicht in java.io vorhanden

7 19 Grundlagen Java I/O Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Erweiterung java.nio Buffer Container für Sequenzen von primitive Datentypen mit begrenzter Größe direkte Zuweisung außerhalb des JVM-Heaps möglich Channel repräsentieren offene Verbindungen zu Datenentitäten (Hardware, File, Socket) Ein- und Ausgabe kann von einem Channel behandelt werden Streams basieren auf Bytes, Channels auf Buffers FileChannel, DatagramChannel, SocketChannel Möglichkeit nicht-blockierender Operationen durch Selektoren

8 19 Serialisierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Serialisierung Persistente Zustände von Objekten Objektstruktur und Variablenbelegung erhalten Speicherung in Datei oder Transfer über Netzwerk Wiederherstellung von Objektzuständen Quelle: Java Tutorials - Basic I/O

9 19 Serialisierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Was kann serialisiert werden? nicht-statische primitive Datentypen nicht-statische Objekte, Objekthierarchien mehrfach referenzierte Objekte nur einmal serialisiert nicht-statische geerbte Attribute und Basisklassen transient erlaubt expliziten Ausschluß serialversionuid zur Kompatibilitässicherung Warum implementiert java.lang.object nicht Serializable?

10 19 Serialisierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Wie wird serialisiert? einfacher Fall: automatische Serialisierung betreffende Klasse implementiert java.io.serializable 1 ObjectOutputStream stream = 2 new ObjectOutputStream ( 3 new BufferedOutputStream ( 4 new FileOutputStream (" serial. dat " ))); 5 6 stream. writeobject ( myobject ); 7 stream. close ();

11 19 Serialisierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Eigene Mechanismen eigene Serialisierungsmethoden für aktuelles Objekt 1 private void writeobject ( ObjectOutputStream out ) 2 throws IOException { 3 4 out. writeutf ( name ); 5 out. writelong (id ); 6 } 7 private void readobject ( ObjectInputStream in) 8 throws IOException, ClassNotFoundException { 9 10 name = in. readutf (); 11 id = in. readlong (); 12 }

12 19 Serialisierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Eigene Mechanismen Interface java.io.externizable Implementierung von writeexternal/readexternal-methoden vollständige Kontrolle, kleinere Datenformate möglich nicht ObjectStream sondern Objekt selber behandelt Serialisierung Beispiel: Objektdaten in PDF

13 19 Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Grundlagen Netzwerkprogrammierung java.net stellt IP-basierte Kommunikation Sockets als logische Endpunkte einer Verbindung einfaches Senden und Empfangen von Nachrichten verschiedene Sockettypen für Verbindungsarten

14 19 Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Sockets und ServerSockets sichere Übertragung, persistente Verbindung, TCP Sockets werden an Ziel-IP und -Port gebunden 1 Socket s = new Socket ( HOSTorIP, toport ); 2 out = new PrintWriter ( s. getoutputstream (), true ); 3 in = new BufferedReader ( 4 new InputStreamReader (s. getinputstream ())); 5 6 out. println (" hello world "); 7 String response = in. readline ();

15 19 Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 ServerSocket ServerSockets für Verbindungsannahme auf Quell-Port gebunden ServerSocket wartet auf Anfrage und erzeugt neuen Socket für Antwort 1 ServerSocket serversocket = new ServerSocket ( myport ); 2 3 while ( true ) { 4 Socket clientsocket = serversocket. accept (); 5 new ClientSocketThread ( clientsocket ). start (); 6 }

16 19 Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 DatagramSocket und DatagramPacket unsichere Übertragung, transistente Verbindung, UDP DatagramSocket wird auf Quell-Port gebunden DatagramPacket enthält eigentliche Ziel-IP und -Port 1 DatagramSocket socket = new DatagramSocket ( myport ); 2 byte [] buf = requeststring. getbytes (); 3 DatagramPacket packet = 4 DatagramPacket ( buf, buf. length (), toaddress, toport ); 5 socket. send ( packet );

17 19 Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 MulticastSocket Sender schickt Paket, das während des Transfers verteilt wird 224.0.0.0-239.255.255.255 für Mehrfachaddressierung reserviert MulticastSocket ms wird nur auf Port gebunden über ms.joingroup(multicastgruppe) beitreten über ms.leave(multicastgruppe) Empfang beenden Sender schickt ein DatagramPacket an Multicastgruppe

18 19 Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 URL einfache Informationsabfrage (z.b. Webanfrage) http(s), ftp, file, etc. in sun.net.www.protocol.* 1 URL url = new URL (" http :// www.uni - ulm.de/ home. html "); 2 BufferedReader in = 3 new BufferedReader ( 4 new InputStreamReader ( url. openstream ())); 5 6 String inputline ; 7 8 while (( inputline = in. readline ())!= null ) 9 System. out. println ( inputline ); 10 11 in. close ();

19 19 Literatur Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember 2009 Links Java I/O Java Tutorials: Basic I/O A Taste of Java s I/O Package: Streams, Files, and... Java New I/O Serialisierung Java Object Serialization Specification Serialisieren von Objekten (Uni Köln) Netzwerkprogrammierung Netzwerke unter Java Java Tutorials:Custom Networking Felix von Leitner: Multicast