Programmieren 2 12 Netzwerke

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

Client-Server TCP/IP - Kodierung

Transmission Control Protocol (TCP)

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Netzwerkprogrammierung unter Linux und UNIX

Referat: Netzwerkprogrammierung in Java

Einstieg in die Informatik mit Java

Serielle Kommunikation - Kodierung

S.M. Hartmann GmbH IT Solutions

Client-Server TCP/IP - Kodierung

Dr. Monika Meiler. Inhalt

Softwarepraktikum Sommersemester 2006

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

Von Keerthikan T. & Siyar Kolusari

Programmiermethodik. Übung 10

Programmieren 2 07 JavaFX-Properties und Data-Binding

Nebenläufige Programmierung in Java: Threads

Rechnernetze und verteilte Systeme Programmieraufgabe

Programmiermethodik. Übung 13

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

G DATA MailSecurity & Microsoft Exchange Server 2013

SOFTWARE HAUSARZTZENTRIERTE VERSORGUNG PRO X HZV_ LEITFADEN UPDATE VERSION /2012 WIR ENTWICKELN VISIONEN!

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

IRF2000 Application Note Port - Weiterleitung

DMXface ACTIVE SEND mit RS232

Filius Simulation von Netzwerken

Java und Netzwerkkommunikation

Der Roboter wird auf einer 2 cm breiten, schwarzen Spur (mit Links- und Rechtskurven) gestartet.

TCP und UDP Sockets in Java

Remote Method Invocation

Hardo Naumann LISA Schnittstelle Zusammenarbeit von EBÜS mit dem Leitstellensystem LISA von Dr. Pfau Fernwirktechnik GmbH

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

Info B VL 16: Monitore und Semaphoren

Service & Support. Mechanismen des CP zum Senden und Empfangen von Daten

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Windows)

Einführung: Verteilte Systeme - Remote Method Invocation -

Client/Server-Systeme

Prozesse und Threads in Android

Client-Server TCP/IP - Kodierung

Kommunikationsmodelle

Bestellsoftware ASSA ABLOY Matrix II

Mit CAR4KMU zum estandard auto-gration in der Automobilindustrie

Projektaufgabe Peer-To-Peer Chat Programm

DECT IP-System. Update-Anleitung

Praktikum Netzwerke. Für den Speicherort tragen Sie Ihr Netzlaufwerk und entsprechende Unterverzeichnisse ein, z.b.:

Informatik 12 Kapitel 2 - Kommunikation und Synchronisation von Prozessen

Parallele Prozesse. Prozeß wartet

TimeSafe Installationsanleitung mit InfotechStart

Zusammenfassung für CS-Prüfung 3 Seite 1. CS-Zusammenfassung für Prüfung 3 vom Im Beispiel gibt es 3 Deadlocks

Erweiterte Konfiguration Agenda Anywhere

Kommentare, Client-Server, Protokolle

Verbindung zwischen Linux Ubuntu LTS und Telekom Speedport W724V (Stand vom , Hartmut Buschke)

Socket-Programmierung unter Java

Programmieren 1 09 Vererbung und Polymorphie

WLAN Nutzung an der HTL Kapfenberg

NetMan Desktop Manager Quickstart-Guide

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Programmieren 2 11 Objekt-Serialisierung

devin v1.60 Bedienungsanleitung

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Browser mit SSL und Java, welcher auf praktisch jedem Rechner ebenso wie auf vielen mobilen Geräten bereits vorhanden ist

Kurs 1866 Sicherheit im Internet

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Networking mit Sockets in Java

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering

Parallele und verteilte Anwendungen in Java

Netzwerkprogrammierung

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Beispiel für einen IPC-Server, der seinen Dienst über den Global Name Service im Netzwerk bekannt gibt. Header-Dateien einbinden

Man liest sich: POP3/IMAP

Software Engineering I (IB) Node.js. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Beispiel Time Client/Server

Ausnahmebehandlung in Java

Konfiguration Agenda Anywhere

Socket-Programmierung unter Java

ESTOS XMPP Proxy

ESTOS XMPP Proxy

Zentralen -Dienst konfigurieren (AdvoluxMailService)

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

Transkript:

Programmieren 2 12 Netzwerke Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1

Motivation Datenaustausch zwischen Programmen Spielstand Chat Datei Termine 2 2

Direkte Kommunikation zwischen Prozessen Zur Erinnerung: Prozess: Programm Eigenständige, vom BS verwaltete Programmausführung Eigener (vor anderen Programmen) geschützter Datenbereich im Speicher Kommunikation mit anderen Programmen (auf demselben Rechner) über das Dateisystem Thread: Programm-interne zusätzliche Ausführung vom Programm (Prozess) verwaltet "aktives Objekt" (1. Semester: Animate-Objekt mit Animator Thread) gemeinsamer Datenbereich Kommunikation über gemeinsame Objekte möglich (1. Semester: Message Channel) 3 3

Socket: Die Schnittstelle zur "Außenwelt" Socket-Verbindung Live-Datenaustausch zwischen Prozessen Prozess-"Adresse": IP-Nummer (Rechner) und Portnummer (Prozess) Der eigene Rechner hat die IP "localhost" oder "127.0.0.1" Portnummern zwischen 0 und 6000 (genau 65535) wählbar 0 1024 "reserviert" für Standard-Dienst-Prozesse Client-Server-Modell Ein Server-Prozess läuft (oft im Hintergrund) und bedient Client-Anfragen ServerSocket legt eine Portnummer fest erkennt Client-Anfragen und stellt eine Verbindung her (Client)Socket wird mit IP-Adresse und Portnummer auf ein ServerSocket "gerichtet" 4 4

Socket-Erzeugung Im Server Server-Socket erzeugen: Im Client Socket erzeugen, incl. Verbindungsanfrage : Im Server Client-Verbindungsanfrage bearbeiten, Socket-Verbindung zum Client erstellen (blockiert) Nicht vergessen: IOException immer möglich! 5 5

Socket-Kommunikation Jedes Socket besitzt einen Eingabe- und einen Ausgabestrom Wenn die Verbindung steht, können Daten gesendet und empfangen werden: Spieler1 (Server) out in Spieler2 in out 6 6

Fragen zum Nachdenken Könnten auch beide Spieler "Server" sein? Wie würde man eine Spieler-Runde realisieren? accept() blockiert, d.h. bis eine Client-Anfrage kommt, kann der Server nichts machen. Wie würde man das machen, wenn er mehrere Clients parallel bedienen soll? read() blockiert, d.h. solange nichts ankommt, lann der wartende Empfänger nichts machen. Wie lässt sich das lösen? 7 7

Entfernte Spieler im Live-Austausch statt store/restoreavatar jetzt send/receiveavatar play() Endlosschleife receiveavatar, gain strength, sendavatar Ausstieg bei 30 Assets durch send/receive null 8 8

play Spielen bedeutet: in einer Endlosschleife Avatar lesen, verändern, senden Endekriterium: Ein Spieler sendet null 9 9

Lesen und Schreiben Die Spieler unterscheiden sich nur durch das Socket, das im Konstruktor fesetzt wird. 10 10

Spieler in der Runde Jeder Spieler hat zwei Sockets: eines als Server, so dass er vom Vorgänger Kontaktiert werden kann. Dort liest er nur. eines als Client, um sich mit dem Nachfolger zu verbinden. Dort schreibt er nur 11 11

Und jetzt noch ein Chat Chat Es gibt einen Chatserver, mit dem sich alle Clients verbinden Client schickt Nachricht an den Server Server gibt die Nachricht an alle Clients weiter Client Client Client Chatserver Client Client 12 12

Einfaches Prinzip - ABER Clients: send receive and display Server : receive from someone send to all Problem: Receive blockiert: Während der Server auf einen client wartet, kommt kein anderer durch Während der Client auf Nachrichten wartet, kann er keine schreiben. 13 13

Risky Simplicity Für jeden Client einen Input- Wächter als Thread! 14 14

Ausweg: Threads Aktive Objekte Definition Thread (Kontrollfaden) Jeder Prozess hat einen Haupt-Thread (z.b. main) weiteres ausführbares Programm innerhalb eines Prozesses Ausführung "parallel" zum HauptThread Häufigste Verwendung: lange oder blockierende Programmteile auslagern Haupt-Thread läuft weiter Neben-Thread muss vielleicht warten schreibt Ergebnis in eine Datenstruktur oder löst ein Event aus 15 15

cs101.lang.animate und java.lang.runnable "Animierbare" Klasse mit der cs101-bibliothek: act() überschreiben, wird in Endlosschleife ausgeführt Parallel ausführbare Klasse mit der Java-Standard-Bibliothek: run() überschreiben, wird nur 1x ausgeführt (Schleife ggf. in run() ) 16 16

cs101.lang.animatorthread und java.util.thread Starten des nebenläufigen Thread, z.b. in einer main-methode wiederholter nebenläufiger Aufruf von act() einmaliger nebenläufiger Aufruf von run() 17 17

Verbesserung des Servers Der Hauptthread wartet auf eine Verbindungsanfrage (blockiert) erstellt die Verbindung startet einen neuen Lese-Thread und wartet auf die nächste Verbindungsanfrage. Der Lese-Thread wartet auf eine Nachricht von genau einem Client (blockiert) versendet sie an alle Clients und wartet auf die nächste Nachricht 18 18

Der Lese-Thread: Ein Runnable-Objekt 19 19

Starten des Lese-Thread im ChatServer 20 20

Und der Client? In Endlosschleife Wartet auf Eingabe aus dem Textfeld Sendet Eingabe an den Server Wartet auf Server-Nachrichten Lese-Thread Wartet auf Nachricht vom Server Hängt sie an die vorigen Nachrichten an Wartet wieder Haupt-Thread Startet Lese-Thread Wartet auf Benutzereingabe sendet sie an den Server Wartet wieder 21 21

FX ChatFrame mit LeseThread FX ChatFrame ist BorderPane (250, 200) 22 22

Die Netzwerk-Interaktion 23 23

Der Lese-Thread, Version 1 Funktioniert, aber: JavaFX erlaubt keine UI-Updates aus einem nicht von FX kontrollierten Thread: 24 24

Der FX-kompatible Lese-Thread mit Platform.runLater wird FX die Kontrolle über den Thread gegeben 25 25

Wie geht es weiter? Clients mit Namen, Teilnehmerliste? Clients registrieren sich beim Server mit Namen Server meldet Teilnahme und Ausstieg an alle Clients Server stellt der Nachricht den Namen voran Chat von Rechner zu Rechner? benutzen sie statt "localhost" die echte IP-Adresse des Servers Problem sind oft Port-Freigaben Security-Einstellungen des Rechners ggf. ändern Port-Freigaben im lokalen Netzwerk nur durch Admin Port 8080 ist meist freigegeben Chat ohne Server? P2P-Chat? Jeder Client ist auch Server Jeder Client "lauscht" auf die bei ihm registrieten Clients 26 26

Das waren die Networking-Grundlagen Ihrer Phantasie sind kaum Grenzen gesetzt 27 27