Client-Server TCP/IP - Kodierung

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

Client-Server TCP/IP - Kodierung

Socket-Programmierung unter Java

Einstieg in die Informatik mit Java

Referat: Netzwerkprogrammierung in Java

Socket-Programmierung unter Java

Programmiermethodik. Übung 10

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

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

Datenströme in Java. Zeichenkonvertierung

Client-Server TCP/IP - Kodierung

Streams. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Verteilte Systeme - Java Networking (Sockets) -

Streams. Thomas Schwotzer

Programmiermethodik. Übung 13

Java und Netzwerkkommunikation

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation

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

Kapitel 9. Ein- und Ausgabe. 9.1 Ströme

Ein- und Ausgabe. Algorithmen und Datenstrukturen II 1

Algorithmen und Datenstrukturen II

Kommentare, Client-Server, Protokolle

Vorlesung Programmieren

Grundlagen der Objektorientierten Programmierung - Ein- / Ausgabe-Streams

Transmission Control Protocol (TCP)

Streams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI

Handbuch konsultieren!

Umleitung von Datenströmen

Modellierung und Programmierung 1

Programmieren 2 Selbststudium Semesterwoche 6

Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Verteilte Systeme - Java Networking (Sockets) 2 -

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

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

Ausnahmen und IO. Fehler, Ausnahmen, Java- Exception, throw, catch, Ströme, Puffer, Dateien lesen, schreiben, Tastatur, Terminal, HTTP

Info B VL 7: Input/Output

Dateien/Streams. Arthur Zaczek

Netzwerkprogrammierung

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

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

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

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem!

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams

Java I/O, Serialisierung und Netzwerkprogrammierung

Dateien/Streams. Arthur Zaczek. Okt 2015

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

B.1 Überblick über die 1. Übung B.1 Überblick über die 1. Übung

B.2 Das Java Ein-/Ausgabesystem. B.1 Überblick über die 1. Übung. Streams (Ein-/Ausgabe) Sockets (Netzwerkprogrammierung) Serialisierung

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

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 12 Datenverarbeitung

Java Einführung IO (Eingabe/Ausgabe)

Abschnitt 18: Beispiel: I/O-Streams

B.2 Das Java Ein-/Ausgabesystem

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

4. Thread- und Netzwerk- Programmierung

Netzwerkprogrammierung & Threads

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Wie schreibt bzw. wie liest man die beiden unterschiedlichen Darstellungen?

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

Java Fehlerbehandlung

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

Programmieren in Java

Distributed Computing Group

Ausnahmebehandlung PK11W-16,

Serielle Kommunikation - Kodierung

Vorlesung Programmieren

Beispiel Time Client/Server

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Java Input/Output System (IO)

TCP und UDP Sockets in Java

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Rechnerkommunikation. Aufgabenblatt 3. Webserver in Java

Ausdrucksbäume in verschiedenen Darstellungen

Ein- und Ausgabe in Java

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 18/19

Betriebssysteme. Wintersemester Kapitel 4 Ein- / Ausgabe und Dateisysteme. Patrick Kendzo

3.11 Ausnahmen und Ein-/Ausgabe

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Lesen und Schreiben von Dateien

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

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

Einführung in die Informatik

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

Javakurs für Fortgeschrittene

Distinguished Lectures Series im SS04. And now YOU ARE HERE. Verwendung der Oberklasse Thread

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

Java Einführung Exception Handling. Kapitel 17

Einführung in die Informatik Files and Streams

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

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

Beispiel senden

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 313

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Transkript:

Client-Server TCP/IP - Kodierung

Die Socketklassen Ein Socket (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse und einer Portnummer (RFC 793,original TCP Spezification) Die Kommunikation findet zwischen einem Server und einem Client über einen definierten Port statt. Java hat vordefinierte Klassen in dem Packet java.net, die die Funktionalität bereitstellen Die beiden Schlüsselklassen für die Erstellung von Server-Client-Programme sind: ServerSocket Socket

Prinzip der Socketprogrammierung

Ablauf eines Socket-Programms Server ServerSocket(1024) Bytes Socket("128.250.25.158",1024) Inputstream Outputstream Client

Server-Kodierung I 1. 2. 2. 3. ServerSocket serversocket = new ServerSocket(1024); Öffnet einen ServerSocket um einem bestimmten Port zu nach Anfragen zu lauschen socket = serversocket.accept(); Ist eine Verbindungsanfrage da, wird ein neuer Socket erstellt, durch den der Server die Daten mit dem Client durch Input-und Outputstreams austauscht: accept() gibt den Socket zurück, der die Verbindung zum Server herstellt outputstream = socket.getoutputstream(); Öffnen des Outputstreams

Server-Kodierung II 4. outputstream.write(255); Durch Ausgabestream einen Wert zum Clienten senden 5. outputstream.close(); Ausgabestream schließen 6. socket.close(); Socket schließen

Client-Kodierung I 1. 2. socket = new Socket("localhost",1024); Erstellt einen neuen Socket localhost ist der aktuelle PC und kann(muss) durch die IP-Adresse ersetzt werden, wenn die Kommunikation über mehrere PCs geht inputstream = socket.getinputstream(); Erstellt einen neuen Inputstream In der Regel auch einen Outputstream 2. 3. zahl = inputstream.read(); Liest die ankommenden Daten in eine Variable ein

Client-Kodierung II 4. inputstream.close(); Schließt den Inputstream(evtl. auch Outputstream) 5. socket.close(); Schließt den Socket

Arten von Sockets Client Server Fordert die Verbindung an Sorgt für Datenaustausch socket = new Socket("localhost",1024); Arbeitssocket serversocket = new ServerSocket(1024); Serversocket socket = serversocket.accept(); Arbeitssocket Horcht auf eingehende Verbindungsanfragen von Clients Sorgt für Datenaustausch

Einführungsbeispiel Server-Client: Server ServerSocket serversocket = null; Socket socket = null; OutputStream outputstream = null; try { serversocket = new ServerSocket(1024); while(true) { System.out.println("Warte auf Client..."); socket = serversocket.accept(); System.out.println("Bin mit Client verbunden."); outputstream = socket.getoutputstream(); outputstream.write(255); outputstream.close(); socket.close(); } } Deklarieren und initialisieren der Objekte Erstellt einen ServerSocket gebunden an Port 1024 Unendliche Wiederholungsanweisung für ankommende Nachrichten Socket lauscht auf dem Port 1024 auf ankommende Nachrichten Sendet 255 an den Klienten(der den Wert in die Konsole schreibt) Schließen des Sockets der Nachricht ->Aufgabe 1

Einführungsbeispiel Server-Client: Client Socket socket = null; InputStream inputstream = null; int zahl; try { socket = new Socket("localhost",1024); inputstream = socket.getinputstream(); zahl = inputstream.read(); System.out.println(zahl ); inputstream.close(); socket.close(); } Deklarieren und initialisieren der Objekte Erstellt einen ServerSocket gebunden an Port 1024 der durch localhost an den gleichen Rechner sendet! Liest einen InputStream für das Socket Einlesen der Daten(Byte) aus dem InputStream Schliessen des InputStreams und des Sockets

Die Methoden der ServerSocket und Socketklasse ServerSocket(int port): Erstellt einen Socket und lauscht dem Port accept(): Akzeptiert eine eingehende Verbindung und akzeptiert diese Socket(String host, int port): Erzeugt einen Socket und verbindet ihn zu dem angegebenen Port auf dem Host getinputstream(): Liest eingehende Daten getoutputstream(); Liest ausgehende Daten close(): Schliesst den Socket Weitere Informationen finden sich unter: http://java.sun.com/j2se/1.4.2/docs/api/java/net/socket.html

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

Byteströme(InputStream/OutputStream) I Java Programm read() write() byte Inputstream Outputstream byte Datenquelle Datenziel

Byteströme(InputStream/OutputStream) II InputStream inputstream = new FileInputStream("d:\\test\\data.txt"); int data = inputstream.read(); Ein Byte in integer-variable einlesen while(data!= -1) { Solange Daten eingelesen wurden System.out.print((char)data); Die Daten werden als Byte eingelesen data = inputstream.read(); Nächstes Byte einlesen } inputstream.close(); Datenstrom schließen InputStream initialisieren

Byteströme(InputStream/OutputStream) III InputStream inputstream = new FileInputStream("d:\\test\\data.txt"); byte[] data = new byte[1024]; int bytesread = inputstream.read(data); while(bytesread!= -1) { System.out.print(new String(data, "UTF-8")); bytesread = inputstream.read(data); } inputstream.close(); Ein Byte Array als Datenpuffer Die ersten max. 1024 Bytes einlesen Solange Daten eingelesen worden sind Byte-Array in String umwandeln Die nächsten max. 1024 Zeichen einlesen Datenstrom schließen int read(): Liest und gibt ein Byte zurück; wenn keine Daten mehr da sind:- 1 int read(byte[] b): Liest Daten in ein Byte-Array und gibt die Anzahl der gelesen Zeichen zurück int write(byte[] b): Schreibt Daten aus einem Byte-Array

Byteströme(InputStream/OutputStream) III InputStream inputstream = new FileInputStream("d:\\test\\data.txt"); InputStream inputstream ; inputstream = new FileInputStream("d:\\test\\data.txt"); The FileInputStream class makes it possible to read the contents of a file as a stream of bytes. The FileInputStream class is a subclass of InputStream. This means that you use the FileInputStream as an InputStream (FileInputStream behaves like an InputStream). Inputstream FileInput- Stream

Datenströme(DataInputStream/DataOutputStream) I Java Programm int, float, double Data Input stream DataOut put stream int, float, double bytes bytes bytes Input stream Output stream bytes Datenquelle Datenziel

Datenströme(DataInputStream/DataOutputStream) II String filename="d:\\test\\data.txt"; Datenstrom öffnen DataOutputStream dataoutputstream =new DataOutputStream(new FileOutputStream(filename)); dataoutputstream.writeint(123); Die Daten werden als int gelesen dataoutputstream.close(); Datenstrom schließen Datenstrom schließen DataInputStream datainputstream =new DataInputStream(new FileInputStream(filename)); int int123 = datainputstream.readint(); Die Daten werden als int geschrieben datainputstream.close(); Datenstrom schließen System.out.println("int123 = " + int123);

Datenströme(DataInputStream/DataOutputStream) II

DataInputStream - Client - Server Kodierung I Socket mysocket = new Socket( localhost,1024); DataInputStream input = new DataInputStream(socket.getInputStream()); Die Klasse DataInputStream erlaubt ganze Zeilen von Text sowie primitive Datentypen zu lesen. Sie haben Methoden wie read, readint, readdouble und readline

DataInputStream - Client - Server Kodierung II Socket mysocket = new Socket( localhost,1024); DataOutputStream output =new DataOutputStream(socket.getOutputStream ()); PrintStream output = new PrintOutputStream(socket.getOutputStream()); Die Klasse PrintStream erlaubt ganze Zeilen von Text sowie primitive Datentypen zu schreiben mit den Funktionen write() und println(). Die Klasse DataOutputStream erlaubt nur primitive Datentypen zu schreiben wie z.b. writebytes() Weitere Informationen zu Streams finden sich unter: http://tutorials.jenkov.com/java-io/datainputstream.html

Eingehende Datenströme mit InputStreamReader bytes Input Stream bytes Input Stream Reader chars Datenquelle Programmkode FileInput- Lokal/Unicode Stream Kodierung

OutputStreamWriter/InputStreamReader I Ersetzt "try" Optional Wahl des Zeichensatzes für die import java.io.*; Konvertierung in Bytes(ISO-Latin1, UTF-8, UTF-16) public class OutputStreamWriterExample { public static void main(string[] args) throws IOException { OutputStream outputstream = new FileOutputStream("Data.txt"); Writer outputstreamwriter = new OutputStreamWriter(outputStream); //Writer outputstreamwriter = new OutputStreamWriter(outputStream,"UTF-16"); outputstreamwriter.write("any fool can."); outputstreamwriter.close(); } }

Kodierungen(ASCII und Unicode) A ~ ASCII 41 7e UTF-8 41 7e e282ac UTF-16 0041 07e 20ac UTF-32 00000041 0000007e 000020ac

Eingehende Datenströme mit BufferedReader bytes Input Stream bytes Input Stream Reader chars Buffered Reader Datenquelle Programmkode FileInput- Lokal/Unicode Stream Kodierung Puffer

BufferedWriter/BufferedReader I import java.io.*; filestream OutputStreamWriter - BufferedWriter public class BufferedWriterExample { public static void main(string[] args) throws IOException { writeusingbufferwriter(); Ersetzt "try" } private static void writeusingbufferwriter() throws IOException { System.out.println("1. Start writing contents to file - BufferedWriter"); try (FileOutputStream filestream = new FileOutputStream(new File("MyFavSports.txt")); OutputStreamWriter writer = new OutputStreamWriter(fileStream); BufferedWriter bufferwriter = new BufferedWriter(writer)) { bufferwriter.write("blitz chess(easy)"); bufferwriter.newline(); bufferwriter.write("blitz Java stream coding(hardest)"); bufferwriter.newline(); } System.out.println("2. Successfully written contents to file - BufferedWriter"); } }

BufferedWriter/BufferedReader II Writer bufferwriter = new BufferedWriter(writer)); Writer Writer bufferwriter; bufferwriter = new BufferedWriter(writer)); Buffered Writer

Eingehende Datenströme(Analog ausgehende Datenströme) https://www.branah.com/unicode-converter http://www.makeinjava.com/inputstreamreaderoutputstreamwriter-utf-file-example/ https://o7planning.org/de/10173/die-anleitung-zu-java-io-characterstreams