Netzwerkprogrammierung & Threads



Ähnliche Dokumente
Netzwerkprogrammierung & Threads

Netzwerkprogrammierung & Threads

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

Programmiermethodik. Übung 13

Transmission Control Protocol (TCP)

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

Verteilte Systeme - Java Networking (Sockets) -

TCP und UDP Sockets in Java

Netzwerkprogrammierung

Referat: Netzwerkprogrammierung in Java

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

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Java und Netzwerkkommunikation

Programmiermethodik. Übung 10

Advanced Network Programming

Informatik B. Vorlesung 16 Netzwerkprogrammierung. Dr. Ralf Kunze

Beispiel Time Client/Server

1. Netzwerkprogrammierung für mobile Geräte

TCP/UDP. Transport Layer

Socket-Programmierung unter Java

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

2 Verbindungslose Kommunikation mit UDP

TCP/IP-Protokollfamilie

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

Client-Server TCP/IP - Kodierung

Rechnernetze. 6. Übung

Socket-Programmierung unter Java

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

15 Transportschicht (Schicht 4)

Online-Publishing mit HTML und CSS für Einsteigerinnen

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

Kommunikation und Synchronisation von Prozessen

Einführung. Internet vs. WWW

Anwendungsprotokolle: HTTP, POP, SMTP

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

2. Architektur von Kommunikationssystemen

Softwarepraktikum Sommersemester 2006

TIA Portal V13 Kommunikation mit S7-1500

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

JDBC. Allgemeines ODBC. java.sql. Beispiele

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

KN Das Internet

4. Thread- und Netzwerk- Programmierung

Vorlesung SS 2001: Sicherheit in offenen Netzen

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java

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

Client-Server-Prinzip

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

CCNA Exploration Network Fundamentals. ARP Address Resolution Protocol

Übungen zu Softwaretechnik

Grundlagen der Rechnernetze. Internetworking

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Internet und WWW Übungen

Client-Server mit Socket und API von Berkeley

Client-Server TCP/IP - Kodierung

Android VPN. Am Beispiel eines Netzwerktunnels für das Domain Name System (DNS) 1 Andiodine - Android DNS-VPN

!"# $ % Internet Protokolle: HTTP 1/38

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

Client/Server-Systeme

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn

Kapitel 4: Design von Client/Server-Software. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

Computeranwendung in der Chemie Informatik für Chemiker(innen) 5. Internet

SNMP und der MIB- Browser von MG-Soft

Informatik B. Vorlesung 17 Netzwerkprogrammierung. Dr. Ralf Kunze

Internetanwendungstechnik (Übung)

VS3 Slide 1. Verteilte Systeme. Vorlesung 3 vom Dr. Sebastian Iwanowski FH Wedel

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

Einführung in die Netzwerktechnik

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

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

TCP/IP Socket Programmierung in C# (Ci sharp) Multicast und Broadcast

Web Grundlagen zum Spidering

Internet Protokolle für Multimedia - Anwendungen

Technische Grundlagen von Internetzugängen

Netzwerk-Programmierung. Netzwerke.

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Java - Webapplikationen

Kontrollfragen: Internet

1. Netzwerkprogrammierung für mobile Geräte

Vorlesung 11: Netze. Sommersemester Peter B. Ladkin

Netzwerktechnologie 2 Sommersemester 2004

Verteilte Systeme CS5001

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck

Vorlesung SS 2001: Sicherheit in offenen Netzen

Remote Method Invocation

Technologische Entwicklung von GIS und Internet der letzten Jahre

Transkript:

& Threads Praktikum aus Softwareentwicklung 2 Netzwerp. - 1

& Threads URL, URLConnection, UDP, TCP Threads Parallele Programme, Synchronisation, Netzwerp. - 2

Grundlagen (1/2) Kommunikation zwischen verteilten Programmen Host Computer Java Virtuelle Maschine Host Computer Java Java Virtuelle Maschine JVM, Web Server, Datenbank, Ftp.. Netzwerk-Betriebssystem Netzwerk-Betriebssystem Netzwerk Netzwerp. - 3

Grundlagen (2/2) ISO OSI Referenzmodell, Internet-Protokolle und Java OSI 7 Schichten Application Presentation Session Transport Network Data Link Physical TCP/IP UDP/IP Internet http, ftp, telnet,... TCP, UDP Internet Protocol Ethernet, Token Ring, FDDI,.. java.net URL etc. Streams Socket etc. InetAddress Package: java.net javax.net javax.net.ssl Netzwerp. - 4

HTTP und URLs Hypertext Transfer Protocol (HTTP/1.1) Uniform Resource Locator (URL) protocol :// host [:port] /filepath [ref] Spezifikation siehe w3.org: http://www.w3.org/addressing/url/url-spec.html Beispiele: http://www.somewhere.com:80/remotesurvey.html https://secure.tiscover.com:443 ftp://www.nowhere.net/ file://d:/tmp/bsp.html mailto://alexander.sommer@tiscover.com Netzwerp. - 5

Verwendung von URLs Ein Objekt der Klasse URL repräsentiert eine Ressource im Internet (z.b. HTML Dokumente, CGI Programme,...) try { URL u = new URL("http://java.sun.com/index.html"); } catch(malformedurlexception e) { } // URL(String protocol, String host, int port, String file) Parsen: u.getprotocol(); u.gethost(); //... (File, Port, Ref) Direktes Lesen von einer URL: InputStream in = u.openstream(); Netzwerp. - 6

URLConnection Verbindung wird durch ein URLConnection Objekt repräsentiert und bei dessen Instanziierung aufgebaut. Generell ist das Erzeugen einer Connection zu einem Url ein mehrstufiger Prozess. URLConnection uc = u.openconnection(); u.connect(); Datenaustausch erfolgt über Streams der URLConnection InputStream ui = uc.getinputstream(); OutputStream uo = uc.getoutputstream(); HttpURLConnection HttpURLConnection http_uc = (HttpURLConnection)uc; uc.getrequestmethod(); uc.getresponsemessage(); Netzwerp. - 7

Beispiel: "mailto:" import java.io.*; import java.net.*;... System.setProperty("mail.host", smtp.tiscover.com"); URL u = new URL("mailto:alexander.sommer@tiscover.com"); URLConnection conn = u.openconnection(); PrintWriter out = new PrintWriter( new OutputStreamWriter(conn.getOutputStream())); out.println("subject: Test"); out.println(); out.println("hello World!"); out.close();... Netzwerp. - 8

TCP/IP, UDP Internet Protocol (IP) Routing der IP-Pakete (versehen mit Empfänger, Sender) Transport Control Protocol (TCP) Verbindung über gemeinsamen Kommunikationskanal Stückelt Nachricht in mehrere durchnummerierte Pakete Überprüft ob Paket Ziel erreicht hat, ansonsten Wiederholung Empfänger setzt Pakete in richtiger Reihenfolge wieder zusammen Uniform Datagram Protocol (UDP) Keine ständige Verbindung - zustandslos Jedes Paket wird einzeln gesendet Paket kann verloren gehen, keine Kontrolle Multicast ist möglich Netzwerp. - 9

Sockets Sockets sind die Schnittstelle zwischen Anwendung und Netzwerkverbindung Host:Port: Zur Identifizierung der Anwendungen Host 1 169.254.235.246 Client 9951 UDP: Pakete TCP: Stream Host 2 169.254.235.247 80 Http- Server Die "Server"-Anwendung wartet auf einem vereinbarten Port auf Verbindungsaufnahmen durch Client-Anwendungen Netzwerp. - 10

UDP paketorientiert Datenaustausch basiert auf Paketen (Datagrammen) DatagramPacket repräsentiert Datenpaket Paket zum Senden: DatagramPacket(byte[] buf, int length, <Host>, <Port>) Paket zum Empfangen: DatagramPacket(byte[] b, int len) DatagramSocket zum Senden und Empfangen public void send(datagrampacket d); public void receive(datagrampacket d); Netzwerp. - 11

Beispiel: UDP Time Client (1/3) Schritt 1: Initialisierung import java.net.*; import java.io.*; public class TimeClientUDP { public static void main (String[] args) throws IOException { if (args.length!= 1) { System.out.println("Usage: java TimeClUDP hostname"); System.exit(1); } // get a datagram socket DatagramSocket socket = new DatagramSocket(); Netzwerp. - 12

Beispiel: UDP Time Client (2/3) Schritt 2: Request schicken // send request // args[0] is the host name byte[] buf = new byte[256]; InetAddress address = InetAddress.getByName(args[0]); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 8889); socket.send(packet); Netzwerp. - 13

Beispiel: UDP Time Client (3/3) Schritt 3: Response empfangen // get response packet = new DatagramPacket(buf, buf.length); socket.receive(packet); // display response String received = new String(packet.getData()); System.out.println("Time received: " + received); socket.close(); }} Netzwerp. - 14

Beispiel: UDP Time Server (1/2) Schritt 1: UDP Socket erzeugen und auf Request warten // imports, public class TimeServerUDP // in main() DatagramSocket socket = new DatagramSocket(8889); try { byte[] buf = new byte[80]; // receive request DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); System.out.println("Time request received."); Netzwerp. - 15

Beispiel: UDP Time Server (2/2) Schritt 2: Response zurückschicken // construct date of time string String timeofday = new Date().toString(); buf = timeofday.getbytes(); // send the response back packet.setdata(buf); socket.send(packet); Packet kennt den Absender /* InetAddress address = packet.getaddress(); int port = packet.getport(); packet = new DatagramPacket(buf,buf.length,address,port); socket.send(packet); */ System.out.println("Time response sent."); } catch (IOException e) { // exception handling } socket.close(); }} Netzwerp. - 16

TCP verbindungsorientiert Kommunikation erfolgt bidirektional über Sockets Socket := (Host, Portnummer) Implementierung des Datenaustausches mit Streams Client stellt Verbindung her durch Instanziierung eines Socket Objektes Server ist implementiert durch ServerSocket und wartet auf einer bestimmten Portnummer auf Anfragen: public Socket accept(); Verbindungsabbruch durch Schließen des Sockets Netzwerp. - 17

Verbindungsaufbau Client Socket s = new Socket(<Host>,<Port>); InputStream si = s.getinputstream(); OutputStream so = s.getoutputstream(); Server (gestartet auf <Host>) ServerSocket ss = new ServerSocket(<Port>); Socket s = ss.accept(); // blockierend InputStream from_so = s.getinputstream(); OutputStream to_si = s.getoutputstream(); Das Socket Objekt repräsentiert die Verbindung Netzwerp. - 18

Beispiel: TCP Time Client import java.net.*; import java.io.*; public class TimeClient { public static void main (String args[]) throws IOException { Socket server = new Socket("localhost",1234); System.out.println("Connected to " + server.getinetaddress()); DataInputStream in = new DataInputStream( new BufferedInputStream(server.getInputStream())); System.out.println("Server said: "+ in.readutf()); server.close(); } } Netzwerp. - 19

Beispiel: TCP Time Server // in main() ServerSocket server = new ServerSocket(1234); while (true) { System.out.println("Waiting for client..."); Socket client = server.accept(); System.out.println("Client from + client.getinetaddress() + " connected."); DataOutputStream out = new DataOutputStream( new BufferedOutputStream( client.getoutputstream())); Date date = new Date(); System.out.println(date.toString()); out.writeutf(date.tostring()); out.flush(); client.close(); } Netzwerp. - 20

Datenaustausch Lesen vom InputStream, schreiben auf den OutputStream Protokoll muss vereinbart werden Kodierung der Daten Koordination der Aktivitäten (Kontrollfluss) Beispiel: Simple Mail Transfer Protocol (RFC-821) Zeilenweiser Austausch von Kommandos und Statusantwort Client sendet Kommando an den SMTP-Server (z.b. "MAIL FROM:<somebody@somewhere.com>\r\n") Server antwortet mit Status-Code (z.b. "250 OK\r\n") Netzwerp. - 21

Ressourcen Networking Tutorial: http://java.sun.com/docs/books/tutorial/networking/ Java Newsletters: http://java.sun.com/community/newsletters/index.html Java Network Programming FAQ: http://www.davidreilly.com/java/java_network_programming/ Networking with Java: http://www.javacoffeebreak.com/java109/java109.html Java Buch-DE: http://www.javabuch.de Netzwerp. - 22

Ende der 3. Übung Netzwerp. - 23