Programmiermethodik. Übung 13



Ähnliche Dokumente
Programmiermethodik. Übung 10

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

Client-Server TCP/IP - Kodierung

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

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

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

VS Praktikum 03 Konzept

Transmission Control Protocol (TCP)

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Client-Server TCP/IP - Kodierung

OP-LOG

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

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

Adressen der BA Leipzig

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

Remote Method Invocation

Verteilte Systeme CS5001

Java: Vererbung. Teil 3: super()

4. Thread- und Netzwerk- Programmierung

L2TP over IPSec mit Windows Mobile 5 für die VPN-Services an der Technischen Universität Wien.

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Übungen zur Softwaretechnik

Client-Server mit Socket und API von Berkeley

PowerWeiss Synchronisation

Inhalt. 1 Installation und Konfiguration des Citrix Receivers

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Websites mit Dreamweaver MX und SSH ins Internet bringen

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

Synchronisation in Java. Invisible Web

Netzwerkprogrammierung & Threads

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

WebService in Java SE und EE

Virtual Private Network

Installationsanleitung dateiagent Pro

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Innere Klassen in Java

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Monitore. Klicken bearbeiten

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

(Hinweis: Dieses ist eine Beispielanleitung anhand vom T-Sinus 154 Komfort, T-Sinus 154 DSL/DSL Basic (SE) ist identisch)

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Projektaufgabe Peer-To-Peer Chat Programm

Ein buchner Unternehmen: Starke Software Gmbh Lise-Meitner-Str Schwentinental Tel.:

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

Netzwerkinstallation WaWi-Profi3

Javakurs zu Informatik I. Henning Heitkötter

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

lldeckblatt Einsatzszenarien von SIMATIC Security-Produkten im PCS 7-Umfeld SIMATIC PCS 7 FAQ Mai 2013 Service & Support Answers for industry.

Professionelle Seminare im Bereich MS-Office

Übungen zu Softwaretechnik

Java-Programmierung. Remote Method Invocation - RMI

teamsync Kurzanleitung

Programmieren in Java

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

Java Virtual Machine (JVM) Bytecode

Installationsanleitung. Installieren Sie an PC1 CESIO-Ladedaten einschl. dem Firebird Datenbankserver, wie in der Anleitung beschrieben.

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Whitepaper. Produkt: combit Relationship Manager / address manager. Dateiabgleich im Netzwerk über Offlinedateien

Battlefield 2 BF2CCD Anleitung

Dieser Artikel beschreibt die Veröffentlichung eines Microsoft SQL Server 2000 über einen ISA Server 2004.

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

XPubInDesign CS2-PlugIn

Modul 2.2: Zugang zu Ihren Teilnehmer-Ordnern via ftp (zum Dateientransfer):

ANYWHERE Zugriff von externen Arbeitsplätzen

Web Sockets mit HTML5. Quelle:

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

.Net Security. Proseminar Objektorientiertes Programmieren mit.net und C# Sabahattin Giritli. Institut für Informatik Software & Systems Engineering

ITT WEB-Service DEMO. Kurzbedienungsanleitung

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

NX Standardinstallation

Installation und Konfiguration von X-Server Xming auf Windows XP

:: Anleitung Hosting Server 1cloud.ch ::

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Simplex-Umformung für Dummies

2. Installation der minitek-app auf einem Smartphone. 3. Verbindung zwischen minitek-app und minitek herstellen

Nutzung von GiS BasePac 8 im Netzwerk

Anwendungsprotokolle: HTTP, POP, SMTP

Anleitung. Schritt für Schritt: iphone und ipad. Richten Sie Ihr -Konto mit Ihrem iphone oder ipad Schritt für Schritt ein.

Objektorientierte Programmierung

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

Installationsanleitung. ipoint - Server

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

Swisscom TV Medien Assistent

Transkript:

Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering andreas.scharf@cs.uni-kassel.de

Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java Vorstellung HA11 (Zusatzaufgabe) 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 HA9 II Sequenzdiagramm beim Starten des Spiels 4

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

Mancala Showroom Sehr viele schöne Lösungen 6

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ücker, die sich ausschließlich mit (Teilen) der Netzwerkprogrammierung auseinandersetzen Java abstrahiert von der zugrunde liegenden Übermittlungsschicht Sockets Streams (Input- und OutputStreams) 7

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) 8

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 9

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."); 10

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 11

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! 12

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 13

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. 14

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

Vorstellung HA11 (Zusatzaufgabe) I HA11 ist eine Zusatzaufgabe, muss also nicht unbedingt bearbeitet werden Gute Übung im Hinblick auf SE1 Wir wollen einen Chat-Server erstellen Aufgabe 1: Projekt mit Struktur erstellen Aufgabe 2: Server erstellen Aufgabe 3: Client erstellen Aufgabe 4: Login GUI Aufgabe 5: Chat GUI Aufgabe 6: LoginController Aufgabe 7: ClientController 16

Vorstellung HA11 (Zusatzaufgabe) II Login Mockup: 17

Vorstellung HA11 (Zusatzaufgabe) III Chat GUI Mockup: 18

Praktische Übung Entwickelt einen Server, der mehrere Verbindungen entgegennehmen kann Entwickelt einen Client, der sich an diesen Server connecten kann 19

Ende Schönes WE! 20