Client-Server TCP/IP - Kodierung

Ähnliche Dokumente
Referat: Netzwerkprogrammierung in Java

Beispiel Time Client/Server

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Java und Netzwerkkommunikation

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

Netzwerkprogrammierung

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

TCP und UDP Sockets in Java

Transmission Control Protocol (TCP)

Programmiermethodik. Übung 13

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

Kommunikation in Netzwerken Teil 2

Datenbanken & Informationssysteme Übungen Teil 1

Netzwerkprogrammierung & Threads

Service Engineering. Einbindung von Web Services in eine Java-Anwendung. Prof. Dr. Andreas Schmietendorf 1. SoSe Service Engineering

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

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Remote Method Invocation

4. Thread- und Netzwerk- Programmierung

Javakurs für Anfänger

Variablen manipulieren per JDI

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Java programmieren: Konsolen-Programme

Umsetzungshilfe Java Teil 1

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Eine Einführung in. für mathematisch- technische Assistenten / Informatik (IHK)

Primitive Datentypen

Remote Method Invocation

1. Mit dem Socket zum Server

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

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

Übungen Programmieren 1 Felix Rohrer. Übungen

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

SQL Tutorium Documentation

Kommunikation und Synchronisation von Prozessen

II.1.1. Erste Schritte - 1 -

Einführung in die Informatik Files and Streams

2 Verbindungslose Kommunikation mit UDP

Bitte beachten Sie: Es gibt mehr als einen Lösungsweg. Ihre Lösung kann auch richtig sein, wenn sie nicht mit der hier gezeigten Lösung übereinstimmt.

Java Fehlerbehandlung

IT in der Arztpraxis Technisches Handbuch zum Kodierassistenten

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

Java-Programmierung. Remote Method Invocation - RMI

How to install freesshd

Praktikum Datenbanken und verteilte Systeme Sommersemester 2015

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java

Rechnernetze. 6. Übung

Programmieren II. Team. Dr. Olaf Schenk Curzio Basso, Michael Hagemann, Odette Häfeli, Philipp Georg Matthias Tröndle, Marcel Arheit

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

public class SternchenRechteckGefuellt {

Teil 1: Ein einfacher Chat

AristaFlow BPM Suit Installation

2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version

Projektaufgabe Peer-To-Peer Chat Programm

Software-Projekt: Mensch ärgere Dich nicht. Dokumentation Softwareprojekt: Mensch ärgere Dich nicht

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

TCP-Sockets in Java und C. Verteilte Systeme Hochschule Regensburg Vorlesung 4, Universitätsstraße 31, Regensburg

Programmierkurs Java

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

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Aufgabe 1: Collections: ZockerBank

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Manuelle Installation des SQL Servers:

Informatik B von Adrian Neumann

FastViewer Remote Edition 2.X

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

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)

Übung Modellierung SS 15. Übungsblatt Nr. 8 Bereich Systemmodelle und Prozessmodelle Thema: Business Process Model and Notation

Einstieg in die Informatik mit Java

NETZWERKPROGRAMMIERUNG IN JAVA

Advanced Network Programming

Codatex Hainzlmaier GmbH & Co.KG Ischlerbahnstraße 15 A-5020 Salzburg. ZE03 Configurator

Windows Client AntranoRA. becom Systemhaus GmbH & Co. KG Antrano.Production AntranoRA-Handbuch Seite 1

JDBC. Allgemeines ODBC. java.sql. Beispiele

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

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

Java Remote Method Invocation (RMI)

Studentische Lösung zum Übungsblatt Nr. 7

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

Nutzung von NetBeans

Vorkurs Informatik WiSe 15/16

Transkript:

Client-Server TCP/IP - Kodierung (1.) (a.) Testen Sie das erste Beispiel aus dem Ordner 01: Starten Sie Client und Server auf dem gleichen PC, aber den Server zuerst! (b.) In welchem Bereich müssen die Ports liegen? Testen Sie mit einem Port, von dem Sie meinen, dass dieser nicht funktioniert und verifizieren Sie die Nichtfunktionalität! (c.) Welche Daten werden übertragen? Zeichenketten? Große Zahlen? Negative Zahlen? (d.) Der Server läuft nicht, der Client wird gestartet. Erklären Sie die Ausgabe auf der Konsole und ändern Sie diese ab, dass der Text Fehler bei.. aufgegeben wird! (e.) Der Server läuft bereits und wird ein zweites Mal gestartet! Erklären Sie die Ausgabe auf der Konsole und ändern Sie gegebenenfalls die Fehlermeldung in eine verständliche Form! (f.) Ändern Sie in der Klasse Server die Programmzeile outputstream.write(256); Begründen Sie, warum jetzt der Client einen falschen Wert auf der Konsole ausgibt. Ändern Sie anschließend den Programmcode, so dass eine fehlerfreie Übertragung erfolgt. Hinweis für die Klasse Server: Verwenden Sie die JDK-Klasse DataOutputStream. (2.) Ein Client schickt an einen Server 2 Zahlen, welche vorher mittels Tastatur eingegeben wurden. Der Server addiert beide Zahlen und schickt das Ergebnis an den Client zurück. Danach beendet er die Verbindung und wartet auf die nächste Verbindungsanfrage. Der Client gibt das vom Server erhaltene Ergebnis auf der Konsole aus und wird danach beendet. Erstellen Sie den Quellcode für den Client und den Server. Client-Server TCP/IP - Kodierung Aufgaben S. 1/9

(3.) Auf der Konsole den Befehl netstat an eingeben. Es werden die aktiven offenen TCP- Ports angezeigt, die im Listen-Modus abhören, ob sich jemand mit Ihnen verbinden möchte: Gegeben ist nun folgender Quellkode: import java.io.*; import java.net.*; public class PortScanner public static void main(string[] args) try Socket socket = new Socket ("localhost",135 ); System.out.println ("Es läuft ein Server auf Port 135"); socket. socket.close(); catch (IOException e) (a.) System.out.println(e.getMessage()); Analysieren Sie den Quellcode und erläutern Sie kurz die Funktion! (b.)erstellen Sie ein Java-Programm, welches nach Eingabe von zwei Portnummern alle dazwischen liegenden Portnummern des eigenen Rechners (URL = localhost) scannen kann. Das Programm soll, falls ein Server auf einer Portnummer erreichbar ist, eine entsprechende Information ausgeben! Client-Server TCP/IP - Kodierung Aufgaben S. 2/9

(4.) Erstellen Sie zwei Programme(Server und Client), welches folgende Ausgabe leisten: Verwenden Sie die Methoden: getlocaladdress(), getlocalport(), getinetaddress(), getport() der Socket-Klasse! Client-Server TCP/IP - Kodierung Aufgaben S. 3/9

(5.) (a.) Ergänzen Sie die vorgegebenen Quellkodes von einem Echoserver und seinem Klienten! (b.) Ändern sie den Server so ab, so dass dieser den Text in Großbuchstaben zurückgibt! (c.) Ändern sie den Server so ab, so dass dieser nach dem Beenden des Clienten weiter läuft aber auch zu beenden ist! Stichwort: Einmalige und Dauerverbindung! (d.) Erweitern Sie das Programm aus (a.) wie folgt: Der Server gibt auf seiner Konsole die folgenden Meldungen aus, welche vom aktuellen Status abhängig sind: "Ich warte..." (Server läuft, ist aber mit keinem Client verbunden) "Bin mit Client verbunden." (Server ist gerade mit einem Client verbunden) "Der Client hat die Verbindung beendet." (Client hatte gerade den String ".." gesendet) Sollte der Client die Verbindung zum Server "unsauber" (also nicht durch Eingabe des Strings "ende") abbrechen, so muss der Server auf seiner Konsole ausgeben: "Verbindung zum Client verloren..." In diesem Fall muss der Server für einen neuen Client verfügbar sein. (e.) Erweitern Sie den Server so, dass dieser den Text zurück sendet, allerdings ersetzt er alle Vokale durch einen per Zufallsgenerator ausgewählten anderen Vokal! Kodieren Sie dazu folgende Funktion: public static String cryptstr(string sourcestr, String cryptstr) sourcestr ist die Zeichenkette, wo die Vokale ersetzt werden, cryptstr die Zeichenkette aus der wahllos Buchstaben zum Ersetzen gewählt werden(hier wird immer mit aeiou deraufruf gestaltet) und es wird die neue Zeichenkette zurückgegeben! (6.) (a.) Ändern Sie die Quelltextvorlage aus (5.), so dass ein Multi-Echo-Server möglich ist, der den jeweiligen Klienten seine Nachricht zurücksendet! (b.) Erweitern Sie das Programm, so dass der Server die Anzahl der Klienten ausgibt! (7.) Kodieren Sie den Multi-Klienten-Chat-Server und einen passenden Klienten! (8.) Kodieren Sie Augabe 6 und 7 mit Hilfe der Landesabiturklassen Socket und ServerSocket neu Client-Server TCP/IP - Kodierung Aufgaben S. 4/9

(9.) Mögliche Abituraufgabe: Erstellen Sie einen Server, welcher die nachfolgend beschriebenen Anforderungen erfüllt: Verbindet sich der Client mit dem Server, so schickt der Server folgende Aufforderung an den Client: "Please enter Password:" Der Client sendet anschließend das Passwort als reinen Text ohne Verschlüsselung, welches vorher mittels Tastatur einzugeben ist. Ist das Passwort korrekt, so sendet der Server eine kurze Nachricht (z. B. " Your password was correct!"), welche der Client auf der Konsole ausgibt. Danach beendet der Server die Verbindung und gibt eine entsprechende Meldung auf der Konsole aus. Anschließend wartet der Server auf die nächste Verbindungsanfrage eines Clients. Der Server soll den jeweils aktuellen Status auf der Konsole ausgeben. Die Konsolenausgaben für den oben beschriebenen Ablauf sollen etwa so aussehen: Server: Client: Ist das Passwort falsch, so sendet der Server eine entsprechende Meldung und beendet ebenfalls die Verbindung. Für diesen Vorgang sollen die Konsolenausgaben etwa so aussehen: Client-Server TCP/IP - Kodierung Aufgaben S. 5/9

Server: Client: Verhalten des Servers bei Fehlern: Sollte beim Start des Servers der Serversocket nicht erzeugt werden können (weil z.b. der Port bereits von einem anderen Server genutzt wird), so wird die folgende Meldung ausgegeben und das Programm wird beendet: Sollte der Client die Verbindung abrupt trennen (wenn z.b. der Client vor Eingabe des Passwortes durch Schließung des Konsolenfensters beendet wird), so darf der Server nicht abstürzen. Er gibt eine eindeutige Fehlermeldung aus und muss weiterhin auf Verbindungsanfragen von Clients warten können. Die Konsolenausgabe für den beschriebenen Ablauf soll etwa so aussehen: Client-Server TCP/IP - Kodierung Aufgaben S. 6/9

Wichtige Hinweise: - In der Abiturklausur werden die Klassendiagramme gegeben! - Denken Sie an die Fußangeln bei der Kodierung insbesondere das Zufügen von \n bei der Methode write um ganze Zeilen zu schreiben! Verwenden Sie zum Testen die beiden Programme unter Templates! (10.) Ein Server soll die Verbindungsdaten von Clients speichern. Wenn sich ein Client mit dem Server verbindet, so speichert der Server sofort die IP-Adresse in der Dotted-Quad- Notation (Dotted-Decimal-Notation) sowie Datum und Uhrzeit des Verbindungsaufbaus in einer Textdatei mit diesem Format: Anschließend findet der (hypotetische)datenaustausch zwischen Client und Server statt. Es würde auch genügen, den Server mit Thread.sleep(10) kurz anzuhalten und danach die Verbindung zum Client sauber zu trennen (11.) Abituraufgabe Client-Server TCP/IP - Kodierung Aufgaben S. 7/9

(c.) Vergleichen Sie die Musterlösung von (b.) und geben Sie allgemeine Kriterien an, wie die(und ihre) Kodierung optimiert werden kann! Lösung: import java.net.*; import java.io.*; public class Server public static void main(string[] args) try System.out.println("Ich warte auf einen Client."); ServerSocket servsock = new ServerSocket(1234); Socket socket = servsock.accept(); System.out.println("Die Verbindung zu einem Client wurde hergestellt."); OutputStream out = socket.getoutputstream(); FileInputStream fis = new FileInputStream("video.wmv"); byte[] buffer = new byte[1024]; while (fis.available()>0) out.write(buffer, 0, fis.read(buffer)); fis.close(); out.close(); socket.close(); servsock.close(); System.out.println("Die Verbindung zum Client wurde beendet."); catch (Exception e) e.printstacktrace(); Client-Server TCP/IP - Kodierung Aufgaben S. 8/9

(12.) Abituraufgabe: Client-Server TCP/IP - Kodierung Aufgaben S. 9/9

Client-Server TCP/IP - Kodierung - Lösungen (1.) (b.) 0 bis 65535; z. B. 80 für Internet belegt (c.) Zahlen von 0..255; d.h. Datetyp byte (f.) Server: dos = new DataOutputStream(outputstream); dos.writeint(257); dos.close(); Client: dis = new DataInputStream(inputstream); zahl = dis.readint(); System.out.println(zahl); dis.close(); Client-Server TCP/IP - Kodierung Lösungswege S. 1/1