Programmiermethodik. Übung 10

Ähnliche Dokumente
Programmiermethodik. Übung 13

Netzwerkprogrammierung & Threads

Referat: Netzwerkprogrammierung in Java

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

4. Thread- und Netzwerk- Programmierung

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Advanced Network Programming

Netzwerkprogrammierung

Java-Programmierung. Remote Method Invocation - RMI

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Remote Method Invocation

Beispiel Time Client/Server


Verteilte Systeme CS5001

Themen. Web Service - Clients. Kommunikation zw. Web Services

Kommunikation und Synchronisation von Prozessen

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Java Remote Method Invocation (RMI)

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java

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

Remote Method Invocation

Synchronisation in Java. Invisible Web

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

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

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Transmission Control Protocol (TCP)

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Parallele Prozesse. Prozeß wartet

Java und Netzwerkkommunikation

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Socket-Programmierung in Java

VS Praktikum 03 Konzept

Multithreading ab Java 5: Die neuen Concurrency APIs

Variablen manipulieren per JDI

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

Praktikum Datenbanken und verteilte Systeme Sommersemester 2015

Mobile und Verteilte Datenbanken

Software Engineering II

Mobile und Verteilte Datenbanken

Name: Matr.-Nr.. Aufgaben: Punkte erreicht. 1. Klient mit Socket Server mit Sockets Java RMI Klienten und Server PHP 9.

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Projektaufgabe Peer-To-Peer Chat Programm

9. Remote Method Invocation Grundlagen der Programmierung II (Java)

Client/Server-Programmierung

Client/Server-Programmierung

2 Verbindungslose Kommunikation mit UDP

Beispiel für überladene Methode

Programmieren 2 Selbststudium Semesterwoche 6

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Beispiel: DB-Mock (1/7)

Einstieg in die Informatik mit Java

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

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

1. Mit dem Socket zum Server

Java I Vorlesung Exceptions

CORBA. Beispiel einer Middleware-Plattform. Christian Fass WS 2013/14 Software Engineering: Basistechnologien

Programmieren in Java

FileMaker und Java...und es öffnen sich neue Welten!

Große Übung Praktische Informatik 1

Client-Server mit Socket und API von Berkeley

Java-Schulung Grundlagen

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH

Javakurs zu Informatik I. Henning Heitkötter

Web (Site) Engineering (WebE)

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Neuerungen im JDK 1.4 : Die Java Logging API und Java Web Start

Java Fehlerbehandlung

Networking. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006

TCP und UDP Sockets in Java

Programmieren von UNIX-Netzen

Warum EJB Technologie (1)?

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

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

4. Informatiktag NRW Projekt online Shop. Barbara Leipholz Schumacher Euregio Kolleg, Würselen

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Java RMI Remote Method Invocation

Netzwerkprogrammierung mit Java

Beispiel Klausuraufgaben

Übungen zu Softwaretechnik

SOAP Schnittstelle von SHAB/Simap/KAB ZH. Version 3.0

Software Engineering II

Java - Programmierung - Objektorientierte Programmierung 1

Transkript:

Programmiermethodik Übung 10 Sommersemester 2011 Fachgebiet Software Engineering andreas.koch@cs.uni-kassel.de

Agenda Vorstellung Musterlösung HA 6 Client/Server Kommunikation in Java Vorstellung HA 7 Praktische Übung 2

Vorstellung Musterlösung HA9 I Controller synchronisieren Modell und Anzeige Idealfall: Controller lassen sich löschen -> keine Compilefehler! 3

Vorstellung Musterlösung HA6 II Sequenzdiagramm beim Starten des Spiels 4

Vorstellung Musterlösung HA6 III Sequenzdiagramm beim Starten des Spiels 5

Client/Server Kommunikation in Java I Netzwerkprogrammierung ist grundsätzlich nicht ganz einfach: Verschiedene Protokolle wie TCP/IP, UDP Mehrbenutzerfähigkeit: Ein Server soll mehrere Verbindungen entgegennehmen können Es gibt Bücher, die sich ausschließlich mit (Teilen) der Netzwerkprogrammierung auseinandersetzen Java abstrahiert von der zugrunde liegenden Übermittlungsschicht Sockets Streams (Input- und OutputStreams) 6

Client/Server Kommunikation in Java II Sockets Sind eine plattformunabhängige, standardisierte Schnittstelle Bidirektionale Verbindung zwischen zwei Programmen Verbinden Anwendungen auf verschiedenen, jedoch häufig auf dem selben Rechner Unterscheidung in Stream Sockets (TCP) und Datagram Sockets (UDP) Verbindung wird definiert durch Serveradresse (z.b. localhost, 192.168.0.4, ) Port (1-65535) 7

Client/Server Kommunikation in Java III Socket Programmierung in Java ist vergleichsweise einfach Beispiel: Aufbau einer Verbindung zu einem Server public static void main(string[] args) Socket socket = null; DataInputStream in = null; try socket = new Socket("localhost", 80); in = new DataInputStream(socket.getInputStream()); String incomingmessage = in.readutf(); System.out.println(incomingMessage); catch (UnknownHostException e) System.err.println("Don't know about host: localhost."); catch (IOException e) System.err.println("Couldn't get I/O for " + "the connection to: localhost."); Socket öffnen Stream holen Daten lesen 8

Client/Server Kommunikation in Java IV Statt 1x lesen, so lange lesen wie es geht: public static void main(string[] args) Socket socket = null; DataInputStream in = null; try socket = new Socket("localhost", 80); in = new DataInputStream(socket.getInputStream()); while(true) String incomingmessage = in.readutf(); System.out.println(incomingMessage); catch (UnknownHostException e) System.err.println("Don't know about host: localhost."); catch (IOException e) System.err.println("Couldn't get I/O for " + "the connection to: localhost."); 9

Client/Server Kommunikation in Java V Entgegennehmen von Verbindungen: public static void main(string[] args) ServerSocket serversocket = null; Socket client = null; try serversocket = new ServerSocket(5000); client = serversocket.accept(); DataInputStream input = new DataInputStream(client.getInputStream()); DataOutputStream output = new DataOutputStream(client.getOutputStream()); while(true) // Send/receive client messages String message = input.readutf(); System.out.println(message); output.writeutf("echo: " +message); catch (Exception e) e.printstacktrace(); ServerSocket öffnen und auf port 5000 hören Lesen Schreiben 10

Client/Server Kommunikation in Java VI Problem: Server müssen mit mehreren Verbindungen umgehen können, Aufrufe wie oder client = serversocket.accept(); sind blockierend! // Send/receive client messages String message = input.readutf(); Lösung: Für jede Verbindung einen neuen Thread aufmachen! 11

Client/Server Kommunikation in Java VII Für jede eingehende Verbindung einen ConnectionHandler erstellen private void start() throws IOException ServerSocket serversocket = new ServerSocket(port); System.out.println("Server started at port <" +port +">"); while(true) Socket socket = serversocket.accept(); System.out.println("Client connected: <" +socket +">"); DataOutputStream outstream = new DataOutputStream(socket.getOutputStream()); connectedsockets.put(socket, outstream); ConnectionHandler connectionhandler = new ConnectionHandler(this, socket); connectionhandler.start(); Erbt von Thread und wickelt Verbindung mit dem Client ab 12

Client/Server Kommunikation in Java VIII Vorsicht bei lesendem/schreibendem Zugriff von mehreren Threads auf Variablen: Kritische Abschnitte müssen synchronisiert werden. So lange ein lesender/schreibender Zugriff auf eine Variable stattfindet, darf kein anderer Thread darauf zugreifen. 13

Client/Server Kommunikation in Java IX Methoden synchronisieren: public synchronized void dosomething() // Do something Hier wird über das Objekt selbst synchronisiert Blöcke sychronisieren: private void start() throws IOException synchronized (connectedsockets) connectedsockets.put(socket, outstream); connectedsockets ist ein Monitor Objekt über das synchronisiert wird 14

Vorstellung HA 7 Storydiagramme modellieren Aufgabe 1: WizardGame::startTurn( ) Aufgabe 2: WizardGame::evaluateWinner() Aufgabe 3: Player::dealCards() Zusatzaufgabe: Player::evaluateTurn() 15

Ende Schönes WE! 16