AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

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

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

Grundlagen der Objektorientierten Programmierung - Ein- / Ausgabe-Streams

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

Verteilte Systeme - Java Networking (Sockets) 2 -

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung

Referat: Netzwerkprogrammierung in Java

Transmission Control Protocol (TCP)

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

11. Die PC-Schnittstelle

Java Fehlerbehandlung

Javakurs für Fortgeschrittene

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

Socket-Programmierung unter Java

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Datenströme in Java. Zeichenkonvertierung

Programmieren I. Kapitel 15. Ein und Ausgabe

Konfiguration der SMTP-Verbindung... 5 Einstellungen speichern / laden... 6 Versenden von Paketen... 6

Info B VL 7: Input/Output

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Serielle Kommunikation - Kodierung

Einstieg in die Informatik mit Java

Bernd Blümel. Verschlüsselung. Prof. Dr. Blümel

Netzwerkprogrammierung unter Linux und UNIX

Grundlagen der Web-Entwicklung INF3172

Version Referenzhandbuch. DiscretePhoton H.264 encoder. DiscretePhoton.

Vorlesung SS 2001: Sicherheit in offenen Netzen

Socket-Programmierung unter Java

Streams. Thomas Schwotzer

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

Grundlagen Internet-Technologien INF3171

Technische Grundlagen

Version: Das Versionsfeld gibt an ob es sich um IPv4 oder um IPv6 handelt.

Mail Integration Solution White Paper

Netzwerk-Analyse mit dem FEC Network Monitor

Konzepte von Betriebssystem- Komponenten Middleware. Jini. Vortrag von Philipp Sommer

Packet Tracer Simulation - TCP-und UDP-Kommunikation

UDP User Datagramm Protokoll

Dateien, Streams. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Vorlesung Programmieren

HTTP Hypertext Transfer Protocol

IDEAL ALERTER 2.0. POINTDEV Espace REVA 2 allee Josime MARTIN CHATEAURENARD FRANCE

PC-Anbindung des HMG Lactate Scout

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus

Das Internet-Protocol. Aufteilung von Octets. IP-Adressformat. Class-A Netzwerke. Konventionen für Hostadressen

Java Input/Output System (IO)

Server - Client Kommunikation

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Netzwerk-Programmierung in C

Anleitungen. Stand: 28. April (Work in Progress) 4 Sichere Mailverbindung in Thunderbird und Outlook 5

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

SCHICHTENMODELLE IM NETZWERK

Anwendungsprotokolle: HTTP, POP, SMTP

Der Backoff-Algorithmus

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

Client/Server-Systeme

TCP Teil 2. TCP Teil 2: Tilmann Kuhn Betreuer: Dr. Thomas Fuhrmann 1/18

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

Abschnitt 18: Beispiel: I/O-Streams

3.11 Ausnahmen und Ein-/Ausgabe

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

Device Management Schnittstellen. Referat von Peter Voser Embedded Development GmbH

Übung 5: Transport. Rechnernetze. Wintersemester 2014/ Allgemeine TCP Verständnisfragen

Transportschicht (Schicht 4) des Internet

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

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Basler Components. Unicast- & Multicast-Verbindungen mit einer Basler IP-Kamera APPLICATION NOTES

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

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

Wiederholung: Beginn

Leistungsnachweis-Klausur Kurs Sicherheit im Internet I Ergänzungen Lösungshinweise

Kommentare, Client-Server, Protokolle

High Performance Embedded Processors

Dokumentation der REST- Schnittstelle des Funk- Sensorsystem GesySense. Gesytec GmbH Pascalstr. 6 D Aachen

Einfache SDO-Zugriffe für CANopen-E/A-Module

Dokumentation. Elektronische Rechnungsübertragung mit der First Businesspost mittels. Business Connector 4.6

Fundamentale Ideen der Informatik PH Weingarten Sommersemester 2014 Paul Libbrecht CC-BY

Kommunikation im lokalen Netz

Netzwerk-Programmierung. Netzwerke.

qfix ASCII-Protokoll

Unicode und URI Grundvoraussetzung für das Semantic Web von Harald Cichos

2. WWW-Protokolle und -Formate

Aufgabenblatt 2 Musterlösung

Themen. Transportschicht. Internet TCP/UDP. Stefan Szalowski Rechnernetze Transportschicht

Programmieren 2 Selbststudium Semesterwoche 6

7.4 Kommunikation. großzügige Pufferung, sowohl Auftragsbeziehungen als auch Nachrichten- oder Byte-Ströme, sowohl lokal als auch übers Netz

Was ist eine Cipher Suite?

SUPERCOM 32-BIT UND 64-BIT WINDOWS UND LINUX FÜR. ADONTEC, All Rechte vorbehalten. Rel D 9001

Netty Tutorial #1. Netty Tutorial #1 - Grundlagen

Programmieren 2 12 Netzwerke

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

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Version 4.0. service.monitor. Systemanforderungen

Vermittlungsschicht ( network layer )

Rapid Response UI mit WebSockets

Grundlagen Rechnernetze und Verteilte Systeme IN0010, SoSe 2018

Praktikum Rechnernetze Aufgabe 3: Messung mit dem Protokollanalyzer

Transkript:

Netzwerk Programmierung Ein großer Teil von dem, was Netzwerkprogramme tun ist ganz simpler input und output: also bytes verschieben von einem System zu einem anderen. Bytes bleiben Bytes. Die Daten zu lesen, die ein Server sendet ist nicht viel anders als von einem file zu lesen. Text zu einem Client senden, ist auch nicht viel anders als ein file zu schreiben. Trotzdem ist das I/O in JAVA anders organisiert als in anderen Sprachen, wie z.b. Fortran, C, C++. I/O in JAVA basiert auf Streams. Es gibt verschiedene stream Klassen Java.io.FileInputStream Sun.net.TelnetOutputStream Einlesen und Auslesen basiert auf allen Stufen fast gleich. Hat man erst einmal einen Stream erzeugt braucht man sich um die Details gar nicht mehr kümmern. Filter Streams können hintereinander verkettet werden. Filter können die Daten verändern, z.b. verschlüsseln, komprimieren. Normalerweise brauchen wir nur das Basis Modell der Stream für Clients. Output Streams Klassen http://www.falkhausen.de/de/diagram/html/java.io.outputstream.html 1

Wobei dies die fundamentalen Methoden sind um Daten zu schreiben. Die Unterklassen von Output Stream benutzen diese Methoden um Daten auf verschiedene Medien zu schreiben. z.b. File OutputStream Daten in ein File TelnetOutputStream Daten auf eine Netzwerk Verbindung ByteArrayOutputStream Daten in Byte Array Egal wo wir hinschreiben, wir benutzen meistens nur diese 5 Methoden. Den TelnetOutputStream finden wir nicht in der Klassendokumentation von JAVA, er ist versteckt in den Sun Packages. Daten können verloren gehen, wenn wir unseren Stream nicht flushen. (to flush = durchspülen) 2

Streams können in Software gepuffert werden, im Java Sourcecode direkt ebenso wie in der Netzwerk Hardware. Daraus folgt konsequenterweise, dass wenn wir geschrieben haben, wir den output Stream flushen müssen. Wir sahen dies schon an einem Beispiel. Beispiel: Angenommen wir hätten eine 300 byte anfrage (request) an einen http 1.1 Server geschrieben, welcher http Keep Alive verwendet. Kennen wir schon aus CISCO. Trotzdem hier eine Wiederholung. http://de.wikipedia.org/wiki/hypertext_transfer_protocol Keepalive ist ein Mechanismus bei der Datenübertragung mit zwei Zielen: eine Netzwerkverbindung am Leben zu halten, sich selbst von Erreichbarkeit und Funktion eines Kommunikationspartners zu überzeugen. Keepalives sind in der Regel spezifische Pakete eines Netzwerkprotokolls. Sie werden in regelmäßigen Abständen durch einen bestehenden Kommunikationskanal zwischen den Partnern ausgetauscht. Vom Empfänger einer solchen Nachricht wird innerhalb einer Zeitschranke eine Reaktion erwartet. Bleibt das Keepalive Paket oder die Reaktion darauf (ggf. mehrfach) aus, geht der entsprechende Kommunikationspartner von einer Unterbrechung der Verbindung oder einer Nichtfunktion des Kommunikationspartners aus und ergreift weitere Maßnahmen. Solche Maßnahmen können sein: Wiederaufsetzen der Netzwerkverbindung bei bestehendem Protokoll (z. B. Fortsetzen eines Dateidownloads, Sitzungsmanagement bei HTTP und VPN Verbindungen), erneute Verbindungaufnahme unter Neustart des Protokolls (z. B. Mailversand über SMTP), endgültige Verbindungsaufgabe (Abbruch), d. h. Beendigung des Protokolls mit einer Fehlermeldung. Üblicherweise warten wir auf eine Antwort, bevor wir wieder mehr Daten senden. Angenommen, der Output Stream hat einen buffer von 1024 byte, dann wartet der Stream auf Daten bis er gefüllt ist, bevor er sendet. Es werden keine Daten auf den Stream geschrieben, bevor der Server nicht antwortet. Wie soll aber der Server antworten, wenn die Daten gar nicht gesendet wurden. Usw. Deadlock s. Abb. Auf Seite 2. Die flush() Methode unterbricht den Deadlock, da sie die Daten sendet obwohl der Puffer noch nicht voll ist. Am besten ist es immer die Streams zu flushen. System.out wird z.b. gepuffert, ob wir das wollen oder nicht. Also vor dem Schließen der Streams immer flushen. Sonst kann es sein, dass Daten verloren gehen. 3

Filter Streams InputStream und OutputStream sind sehr einfache Klassen. Sie lesen und schreiben Bytes in Gruppen, das ist alles. Die Entscheidung, was diese Bytes bedeuten Ganze Zahlen IEEE 754 Kommazahlen Unicode Text Etc. Liegt voll auf der Seite des Programmierers und dessen Code. Es gibt einige übliche Formate für die Übertragung. 32 bit big endian integers http://de.wikipedia.org/wiki/little_endian Text in 7bit ASCII, 8 bit Latin 1, multi byte utf 8 Files per ftp im zip format Etc. JAVA stellt einige Filter Klassen zur Verfügung, die man auf die Rohdaten anwenden kann um die Bytes zu übersetzen. Die Filter gibt es in zwei Versionen: Filter streams Readers and writers 4

Filter sind in einer Kette organisiert, wie in folgender Abb. zeigt. Zum Verschlüsseln von Datenströmen bietet das Java SDK die praktischen Klassen javax.crypto.cipherinputstream und CipherOutputStream an. Sie erwarten ein Cipher Objekt, das eine DES Verschlüsselung durchführt. http://de.wikipedia.org/wiki/cipher_block_chaining_mode (Cipher Chiffre, Geheimschrift) 5