Socket-Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Tomcat Web-Server installieren
Internetzugriff mit Strings und Streams
Ausnahmen HS Merseburg (FH) WS 06/07.
Java News & Music Der Chat
Daten Anzeigen und Ausdrucken Zu Zeigende Daten (z.B. Studentenplan) Daten in XML müssen geparst und in PDF- Format umgewandelt werden. Dazu iTEXT Bibliothek.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
Verzweigung oder bedingte Anweisung Weiter mit PP.
IF-ELSE-IF-Ketten Weiter mit PP..
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
ARRAY oder FELD oder VEKTOR
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Bestimmung des ggT zweier Zahlen
Verzweigung.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Netzwerkprogrammierung
Praxis der Internet-Programmierung
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Optimale Ursprungsgerade
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Programmiervorkurs WS 2014 Referenzdatentypen
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Ein-/ Ausgabe in Java ein Überblick. © eigentlich ganz einfach ? Ein-/Ausgabe durch package java.io Ausgabe (auf Konsole) mit System.out.println()
Tutorstunde 10.
 Präsentation transkript:

Socket-Programmierung Referent: Robert Schädlich Betreuer: Olaf Hilden, Kurs 5.3

Inhaltsverzeichnis Verbinden, senden und empfangen Eine Netzwerkverbindung über einen Socket herstellen Der TippDesTagesClient Das Lesen von Daten aus einem Socket Der TippDesTagesServer Das Schreiben von Daten in einen Socket Exceptions Zusammenfassung und Ausblick

1) Verbninden, Senden und Empfangen Herstellen einer Verbindung zwischen Client und Server Senden von Nachrichten Empfangen von Nachrichten

2) Eine Netzwerkverbindung über einen Socket herstellen Socket (Klasse: java.net.Socket): repräsentiert die Verbindung zwischen zwei Maschinen, bei der beide Softwareteile voneinander wissen beide Softwareteile können miteinander kommunizieren, d.h. sie können sich gegenseitig Bits zusenden

Portnummern: „Unverwechselbares Identifikationsmerkmal“ ermöglicht Zuordnung von Clientanfragen zu Anwendungen 0-1023 (von insgesamt 65536) sind bereits für sog. „Well-known services“ reserviert (z.B. HTTP-Server auf Port 80)

3) Der TippDesTagesClient Das Programm muss im Wesentlichen zwei Dinge tun: Verbindung zum Server herstellen Nachricht lesen

import java.net.* ; public class TippDesTagesClient { public void los () { Socket s = new Socket ("127.0.0.1", 4242) ; ...... } public static void main (String[] args) { TippDesTagesClient client = new TippDesTagesClient () ; client.los () ;

4) Das Lesen von Daten aus einem Socket Eine Socket-Verbindung herstellen Einen InputStreamReader erzeugen, der mit dem Verbindungsstrom verkettet ist Einen BufferedReader machen und lesen! Socket sock = new Socket ("127.0.0.1", 4242) ; InputStreamReader streamreader = new InputStreamReader (sock.getInputStream () ); BufferdReader reader = new BufferdReader (streamreader) ; String message = reader.readLine () ;

import java.net.* ; import java.io.* ; public class TippDesTagesClient { public void los () { Socket sock = new Socket ("127.0.0.1", 4242) ; InputStreamReader streamreader = new InputStreamReader (sock.getInputStream() ) ; BufferedReader reader = new BufferedReader (streamreader) ; String tipp = reader.readLine () ; System.out.println (”Tipp des Tages: “ + tipp) ; reader.close () ; } public static void main (String[] args) { TippDesTagesClient client = new TippDesTagesClient () ; client.los () ;

5) Der TippDesTagesServer Die Server-Anwendung erzeugt einen ServerSocket auf einem bestimmten Port. Der Client stellt eine Socket-Verbindung zur Anwendung her. Der Server erzeugt einen Socket für die Kommunikation mit diesemClient ServerSocket serversock = new ServerSocket (4242) ; Socket sock = new Socket ("127.0.0.1", 4242) ; Socket sock = serversock.accept () ;

import java.net.* ; import java.io.* ; public class TippDesTagesServer { String[] tippListe = {"Essen Sie weniger Chips und Gummibärchen.", "Holen Sie sich die engen Jeans. Nein, Sie sehen darin NICHT dick aus. ", "Mit einem Wort: Unmöglich!", "Seien Sie ehrlich, nur heute. Sagen Sie ihrem Chef, was sie *wirklich* denken.", "Sie sollten wirklich mal wieder zum Friseur gehen…", "Gönnen Sie sich ein kaltes Bierchen – Sie haben es sich verdient! ", "Dieser Grünton steht Ihnen eigentlich nicht besonders…"} ; public void los () { ServerSocket serversock = new ServerSocket (4242) ; while (true) { Socket sock = serversock.accept () ; } private String getTipp () { int zufallszahl = (int) (Math.random() * tippListe.length) ; return tippListe [zufallszahl] ; public static void main (String[] args) { TippDesTagesServer server = new TippDesTagesServer () ; server.los () ;

6) Das Schreiben von Daten in einen Socket Eine Socket-Verbindung herstellen Einen PrintWriter erzeugen, der mit dem Verbindungsstrom verkettet ist Etwas schreiben Socket sock = new Socket ("127.0.0.1", 4242) ; PrintWriter writer = new PrintWriter (sock.getOutputStream () ) ; writer.println (“zu sendende Nachricht”) ;

import java.net.* ; import java.io.* ; public class TippDesTagesServer { String[] tippListe = {"Essen Sie weniger Chips und Gummibärchen.", "Holen Sie sich die engen Jeans. Nein, Sie sehen darin NICHT dick aus. ", "Mit einem Wort: Unmöglich!", "Seien Sie ehrlich, nur heute. Sagen Sie ihrem Chef, was sie *wirklich* denken.", "Sie sollten wirklich mal wieder zum Friseur gehen…", "Gönnen Sie sich ein kaltes Bierchen – Sie haben es sich verdient! ", "Dieser Grünton steht Ihnen eigentlich nicht besonders…"} ; public void los () { ServerSocket serversock = new ServerSocket (4242) ; while (true) { Socket sock = serversock.accept () ; PrintWriter writer = new PrintWriter (sock.getOutputStream () ) ; String tipp = getTipp () ; writer.println (tipp) ; writer.close () ; System.out.println (tipp) ; } private String getTipp () { int zufallszahl = (int) (Math.random() * tippListe.length) ; return tippListe [zufallszahl] ; public static void main (String[] args) { TippDesTagesServer server = new TippDesTagesServer () ; server.los () ;

7) Exceptions Mögliche Ursachen: Port des Servers bereits belegt bzw. Port des Clients nicht belegt Netzwerkverbindung unterbrochen (Kabel, Telekom, …)  Verwendung von try/catch-Blöcken Im try-Block steht riskante Methode und im catch-Block die Problembehandlung Wenn nichts mehr zu retten ist, sollte im catch- Block die printStackTrace()-Methode stehen, um zumindest den Fehler zurückverfolgen zu können

Überarbeiteter Clientcode: import java.net.* ; import java.io.* ; public class TippDesTagesClient { public void los () { try { Socket sock = new Socket ("127.0.0.1", 4242) ; …. reader.close } catch (IOException ex) { ex.printStackTrace () ; } public static void main (String[] args) { TippDesTagesClient client = new TippDesTagesClient () ; client.los () ;

Überarbeiteter Servercode: import java.net.* ; import java.io.* ;   public class TippDesTagesServer {   String[] tippListe = { … } ; public void los () { try { ServerSocket serversock = new ServerSocket (4242) ; while (true) {   Socket sock = serverSock.accept () ; PrintWriter writer = new PrintWriter (sock.getOutputStream () ) ; String tipp = getTipp () ; writer.println (tipp) ; writer.close () ; System.out.println (tipp) ; } } catch (IOException ex) { ex.printStackTrace () ; …   public static void main (String[] args) { TippDesTagesServer server = new TippDesTagesServer () ; server.los () ;

8) Zusammenfassung & Ausblick Client- und Server-Anwendungen kommunizieren über eine Socket- Verbindung. Ein Socket repräsentiert eine Verbindung zwischen zwei Anwendungen, die auf verschiedenen realen Maschinen laufen können (aber nicht müssen) Ein Client muss IP-Adresse und die TCP- Portnummer der Server-Anwendung wissen.

Mit Hilfe von TCP-Portnummern können sich verschiedene Clients mit derselben Maschine verbinden und dabei mit unterschiedlichen auf diesem Rechner laufenden Anwendungen kommunizieren. Ein Client verbindet sich mit einem Server, indem er einen Socket erzeugt. Für die Kommunikation über eine Socket- Verbindung verwendet man ganz normale Eingabe/Ausgabe-Ströme.

Quellen Kathy Sierra und Bert Bates (deutsche Übersetzung: Elke Buchholz und Lars Schulten), (2006). “Java von Kopf bis Fuß“. Köln:O‘Reilly Verlag Stefan Middendorf, Reiner Singer, Jörn Heid, (2009). http://www.dpunkt.de/java/Program mieren_mit_Java/Netzwerkprogrammierung/1 2.html