Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer...

25
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 Networking Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL

Transcript of Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer...

Page 1: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1�������������� ��������������

���������������������������

Networking

Motivation

Grundlagen von Sockets

Klasse Socket

Klasse ServerSocket

Exceptions

Klasse URL

Page 2: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 2�������������� ��������������

���������������������������

Netzwerkprogrammierung in Java

� Programme schreiben, wobei Teile auf unterschiedlichen Rechnern laufen und diese Programmteile miteinander kommunizieren

� Grundproblematik der Netzwerkprogrammierung

• Zueinanderfinden der verteilten Programme

• Aufbau einer Verbindung

• Verständigung über die Kommunikation

• Austausch von Nachrichten

• Austausch von Daten

2 Modelle:

1. Socket-Streaming (dieses Kapitel)

2. Remote-Objekte (nächstes Kapitel)

������

�����

�������

Page 3: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 3�������������� ��������������

���������������������������

Prinzipien von Socket-Streaming

� Adressierung über IP-Adressen und Ports

� Client und Server

• Client schickt Anforderung an Server

• Server behandelt Anforderung und

• schickt Antwort zurück

� Austausch von Daten zwischen Client und Server erfolgt über Byte-Streams ähnlich dem Dateizugriff (siehe Streaming)

� Daten müssen interpretiert werden; erfolgt unter Verwendung eines entsprechenden Protokolls, z.B. HTTP, SMTP oder andere

Damit steht Socket-Streaming im Gegensatz zu Remote-Objects, die die Semantik von Java-Objekten haben !!

Page 4: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 4�������������� ��������������

���������������������������

IP-Addressierung

� 4 Byte IP-Adresse

� geteilt in Netzwerk-ID und eine Host-ID

� Adresstypen: Klassen A, B, C

� Domain-Namen: symbolische Namen für IP-Adressen

����� ����� ����� �����

Klasse-C-Netze sind für kleinere Unternehmen vorgesehen, die nicht mehr als 254 unterschiedliche Rechner adressieren müssen.

821C

Ein Klasse-B-Netz erlaubt immerhin noch die eindeutige Adressierung von 65534 unterschiedlichen Rechnern innerhalb des Netzwerks.

1614B

Für sehr große Netzbetreiber vorgesehen. 247A

BeschreibungHost-IDNetzwerk-IDKlasse

Page 5: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 5�������������� ��������������

���������������������������

Ports

� Ports dienen dazu, Serverdienste auf einem Rechner zu identifizieren

� Ganzzahl im Bereich 0 .. 65535

� Viele Portnummern standardisiert:

BeschreibungTransportPortName

tcp

tcp

tcp

tcp

tcp

tcp

tcp

tcp

tcp/udp

tcp/udp

tcp/udp

Remote Method Invocation1099 rmi

Übertragen von Mails 110pop3

Der Web-Server 80www

Liefert Benutzerinformationen 79finger

Einfacher Namensservice 43 whois

Versenden von E-Mails 25smtp

Interaktive Session mit entferntem Host 23 telnet

Versenden und Empfangen von Dateien 21 ftp

Liefert ASCII-String mit Datum und Uhrzeit 13 daytime

Ignoriert jede Zeile, die der Client sendet 9 discard

Gibt jede Zeile zurück, die der Client sendet7echo

Page 6: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 6�������������� ��������������

���������������������������

Sockets

� Sockets sind eine Programmierschnittstelle für streambasierteKommunikation

� Übertragen von Daten ähnlich dem Schreiben einer Datei

• Aufbau einer Verbindung über IP-Adresse und Port

• Lesen oder Schreiben von Daten

• Schließen der Verbindung

� In Java unterscheidet man zwischen Client- und Server-Sockets

• Client-Sockets (Klasse ����) für das eigentliche Lesen und Schreiben (sowohl am Client als auch am Server)

• Server-Sockets (Klasse ��������) für das Annehmen von Client-Requests

� Lesen und Schreiben erfolgt über ���������� und ������������

Page 7: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 7�������������� ��������������

���������������������������

Wichtige Klassen von ����������������������������

� ����Socket für Data-Streaming

� ��������Socket für die Annahme von Requests am Server

� ��������Repräsentiert eine IP-Adresse

� ���Repräsentiert eine URL

Page 8: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 8�������������� ��������������

���������������������������

Klasse �������� �������� �������� ��������

� Klasse �������� repräsentiert eine IP-Adresse

� ������-Methoden zur Erzeugung von ��������-Objekten

• Zugriff auf 4 Byte IP-Adresse

• symbolischer Name

������ ����� �������� �������� �������� �������� ����� ����� �������� ����������

������ �������� !"#����$%&��#����$%&��#����$%&��#����$%&��'�����# (���)"""

������ �������� #�$%������#�$%������#�$%������#�$%������'�%� ! ����)"

������ �������� #�$%������#�$%������#�$%������#�$%������'�����# (���*"�%� ! ����)"

������ �������� #�$%&��#�$%&��#�$%&��#�$%&��'�����# (���)"

������ �������� #������+���#������+���#������+���#������+���')"

�����# #�+���������#�+���������#�+���������#�+���������')"

�%� !"#�������#�������#�������#�������')"

�����# #�+���&��#�+���&��#�+���&��#�+���&��')"

Page 9: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 9�������������� ��������������

���������������������������

Klasse ����������������

� Die Klasse ���� repräsentiert einen Socket für Data-Streaming mit

• Konstruktor zum Aufbau einer Verbindung mit Adresse und Port

• Zugriffsmethoden auf ��������� und ����������� für dieses ����-Objekt

������������������������ �������������������� ����

������������������������ ����'�����# ������*"������������ ����)

������������������������ ����' �������� ������*"������������ ����)"

������������������������ ��������� #� ���������')

������������������������ ����������� #������������')

Page 10: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 10�������������� ��������������

���������������������������

Beipiel Client-Socket: Zugriff auf WebServer (1)

� Das folgende Beispiel zeigt eine Client-Anfrage an einen Web-Server

• Verbindungsaufbau erfolgt mit der in der Kommandozeile angegebenen Adresse des Web-Servers

• Es wird dabei ein ����-Objekt erzeugt, wobei der Port 80 als Standardport für WWW verwendet wird

• Danach werden vom ����-Objekt sowohl ein ��������� als auch �����������geholt

• Es erfolgt die Konstruktion und die Ausgabe eines HTTP GET-Kommandos an den Web-Server wobei das zweite Kommandozeilenargument den Dateinamen bestimmt

������������������������ �������������������� ������#,-.,"/������������������������ ������������������������ ���������������� ����'�����# !"��#�)"/

��%��%��%��% / �������� ������ 0" ���������#�$%&��'��#� .!)1"���� ��� 0"�2�2�2�2 ����'������*"�.)1

����������� ���"0"����#������������')1 ��������� ��"0"����#� ���������')133"456�7������� ���������#"�"0"8456"8"9"��#� :!"9"8"+66;3:�.8"9"8<�<�<�<�81����2���'��#�$%��'))1

Page 11: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 11�������������� ��������������

���������������������������

Beipiel Client-Socket: Zugriff auf WebServer (2)

• Die Antwort vom Server wird über den ��������� zeilenweise gelesen und auf der Konsole ausgegeben

• Am Ende werden ���������, ���������� und ���� geschlossen

• Es folgt noch die ����(�Anweisung, um alle auftretenden �5�������� zu fangen

������������ ��1�%��%��%��%� !"�"0"�2�2�2�2 �%��%��%��%� :..!12(��2(��2(��2(�� ''�� 0"������'�))"=0"�:)"/�%��������2���'�*".*"��)1

>

�������')1��������')1��������')1

>"����(����(����(����( ' �5������� )"/�%��������������'��������#'))1�%�������':)1

>>

>

Page 12: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 12�������������� ��������������

���������������������������

Klasse ��������������������������������

� Die Klasse Server���� repräsentiert den Einstieg in einen Server und dient dazu Client-Requests anzunehmen

• Konstruktor zum Anlegen eines ServerSockets mit entsprechender Portnummer. Der ServerSocket horcht damit auf den Port auf dem lokalen Rechner.

• Die wichtigste Methode ist die Methode �����. Mit dieser horcht der �������� auf hereinkommende Requests. Sie blockiert, bis ein Request am Port hereinkommt und liefert dann einen normalen Socket für die Datenkommunikation mit dem Client.

������������������������ �������������������� ��������

������������������������ ��������'������������ ����)"�(��2��(��2��(��2��(��2� �5�������

������������������������ ���� �����')

Page 13: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 13�������������� ��������������

���������������������������

Beispiel ��������������������������������: �����5�(����������5�(����������5�(����������5�(����� (1)

� Das folgende Programm zeigt die Verwendung von ��������

• Der �������� wird mit Portnummer 7 erzeugt und horcht dann auf hereinkommende Client-Requests

• sobald ein Request eingeht, liefert ����� einen ���� für Ein- und Ausgabe.

������������������������ ��������?1������������������������ ��������?1

������������������������ �������������������� �����5�(����� /������������������������ ������������������������ ���������������� ����'�����# !"��#�)"/��%��%��%��% /�%���������������'8@��� ��A"B�������#"��A";���"C���8)1�������� �(�� 0"�2�2�2�2 ��������'C)1���� ���� 0"�(��������')1

�%���������������'8B�������# (�#�����8)1 ��������� ��"0"�����#� ���������')1����������� ���"0"�����#������������')1

Page 14: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 14�������������� ��������������

���������������������������

Beispiel ��������������������������������: �����5�(����������5�(����������5�(����������5�(����� (2)

• Über ��������� �� und ����������� ��� erfolgt das Lesen der Daten vom Client und das Zurücksenden der selben Daten zum Client

• Danach werden alle Sockets geschlossen die Verbindung abgebaut.

������������ �12(��2(��2(��2(�� ''�"0"������'))"=0"�:)"/����2���''�(���(���(���(��)�)1�%�������������''�(���(���(���(��)�)1

>

�%���������������'8B�������# ����8)1���������')1�(�������')1

>"����(����(����(����( ' �5������� )"/�%��������������'��������#'))1�%�������':)1

>>

>

Page 15: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 15�������������� ��������������

���������������������������

Beispiel Mehrere Client bedienen: 5�(�����5�(�����5�(�����5�(����� (1)

� Normalerweise will ein Server viele einkommende Clients bedienen

� Dies wird erreicht, indem der accept-Aufruf in eine Schleife verpackt und für jeden einkommenden Client-Request ein eigener Thread EchoClientThread erzeugt wird.

������������������������ ��������?1������������������������ ��������?1

������������������������ �������������������� 5�(����� /������������������������ ������������������������ ���������������� ����'�����# !"��#�)"/������������ ��� 0".1��%��%��%��% /�%���������������'8@��� ��A"B�������#�"��A";���"C���8)1�������� �(�� 0"�2�2�2�2 ��������'C)12(��2(��2(��2(�� '������������)"/���������������� ���������������� 0"0"0"0"�(���������(���������(���������(��������')1')1')1')1''''�2�2�2�2 5�(�D����6(���'99���5�(�D����6(���'99���5�(�D����6(���'99���5�(�D����6(���'99���*"*"*"*"����))����������))����������))����������))������')1')1')1')1

>>"����(����(����(����( ' �5������� )"/�%��������������'��������#'))1�%�������':)1

>>

>

Page 16: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 16�������������� ��������������

���������������������������

Beispiel Mehrere Client bedienen: 5�(�����5�(�����5�(�����5�(����� (2)

� In der ���-Methode des EchoClientThreads werden die Daten wie gehabt gelesen und zurückgeschickt.

�������������������� 5�(�D����6(��� �������������������� 6(��� /

������������������������ ������������ ���1������������������������ ���� ����1

������������������������ 5�(�D����6(���'������������ ���*"���� ����)"/�(���(���(���(������ 0"���1"�(���(���(���(������� 0"����1

>

������������������������ ���������������� ���')"/��%��%��%��% / ��������� ��"0"�����#� ���������')1����������� ���"0"�����#������������')1����2���''��# 9"8<�<�8)�#�$%��'))1������������ �12(��2(��2(��2(�� ''�"0"������'))"=0"�:)"/����2���''�(���(���(���(��)�)1�%�������������''�(���(���(���(��)�)1

>���������')1

>"����(����(����(����( ' �5������� )"/�%��������������'��������#'))1

>>

>

Page 17: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 17�������������� ��������������

���������������������������

Beispiel E-Mail senden

� E-Mail senden erfolgt nach dem SMTP-Protokoll auf Port 25

� Das SMTP-Protokoll hat folgendes Format

+5��"������"+���E� �"F��EG"H5�E���"�����"��"�������I�D;6"6�G"H5�E���"�����"��"5��AJ�#��IK�6�F���G"H5�E���"�����"��"�������I������G"H$��AAI6�G"H5�E���"�����"��"5��AJ�#��IK��G"HK����I

5�E���"&��(���(�"��"�(���"L����M� 6

Page 18: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 18�������������� ��������������

���������������������������

Beispiel E-Mail senden

� Verbindungsaufbau erfolgt • durch Öffnen eines ����s zum E-Mail-Host

• und Erzeugen eines ;����@����s und eines ����s für den Socket

� Senden von Nachrichten erfolgt durch zeilenweises Schicken der Protokollanweisungen und Daten, wobei

• jedes Zeile mit N<�<�N abgeschlossen werden muss

• Nach jedem Kommando und nach dem gesamten Text jeweils die Antwortzeilen gelesen werden müssen

� Die DATA Section• Sollten jeweils Zeilen enthalten mit Angabe von

- Absender (From: …),

- Empfänger (To: …),

- Datum

- Betreff (Subject: …)

• mehrere Zeilen mit Nachricht- Text mit beliebigen ASCII-Zeichen, jedoch ohne die Steuerzeichen SP, HAT, CR, LF

• Am Ende einen einzelnen Punkt . in einer Zeile

���� �������� 0"�2�2�2�2 ����'N������������������������N*"O-)1;����@���� ���"0"�2�2�2�2 ;����@����'���������#������������'))1$�AA������ ��"0"�2�2�2�2 $�AA������'

�2�2�2�2 �������������'���������#� ���������')))1

Page 19: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 19�������������� ��������������

���������������������������

Beispiel E-Mail senden ������������������������ ������������������������ ���������������� ����'�����# !"��#�)"/

����"��������1$�AA������"��1;����@����"���1

��%��%��%��% /��������"0"�2�2�2�2 ����'8������������������������8*"O-)1

���"0"�2�2�2�2 ;����@����'���������#������������'))1��"0"�2�2�2�2 $�AA������'�2�2�2�2 �������������'���������#� ���������')))1

����'��)1"�����#"(���&��"0" ���������#������+���')�#�+���&��')1���'���*"8+5��"8"9"(���&��)1����'��)1"���'���*"8E� �"F��EG"H�������������P�����I8)1����'��)1"���'���*"8�D;6"6�G"H(��������(�A�P�����I8)1����'��)1"���'���*"8K�6�8)1����'��)1"���'���*"8F���G"�������������P�����8)1���'���*"86�G"A�������%�P�����8)1���'���*"8K��G"8"9"K��F������#�K��6�� ������')�A�����'�2�2�2�2 K��')))1"���'���*"8������G"O"����#"E���8)1���'���*"88)1���'���*"8K��"���"��"E���8)1���'���*"8���"�2�"L����8)1���'���*"8�8)1����'��)1"���'���*"8M���8)1����'��)1"�������������')1

>"����(����(����(����( '����2�+���5�������")"/����������6���')1

>"����(����(����(����( ' �5�������")"/����������6���')1

>>

Page 20: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 20�������������� ��������������

���������������������������

Beispiel E-Mail senden (Forts.)

3??"�����"�"���"A���"$�AA������"��"?"P�����P�����P�����P����� ��?"P�����P�����P�����P�����?"P�(��2�P�(��2�P�(��2�P�(��2� �5�������?3������������������������ ������������������������ �����#"����'$�AA������"��)"�(��2��(��2��(��2��(��2� �5�������"/

�����#"���"0"���������')1�A�A�A�A '���"00"����������������)"/

���"0"881>�%���������������'8����"'������#)G8"9"���)1�������������������� ���1

>

3??"����"�"���"��";����@����"���?"P�����P�����P�����P����� ���?"P�����P�����P�����P����� ���?"P�(��2�P�(��2�P�(��2�P�(��2� �5�������?3������������������������ ������������������������ ���������������� ���';����@����"���*"�����#"���)"�(��2��(��2��(��2��(��2� �5�������"/

���������'���)1�%���������������'8����"'�����#)G"8"9"���)1���������'8<�<�8)1����A���(')1

>

Page 21: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 21�������������� ��������������

���������������������������

URLs

� URL vereinfacht das Abholen von Informationen auf Remote-Sites

• URL wird mit dem String, der die Remote-Ressource adressiert, angelegt, z.B. File http://java.sun.com/index.html

• Erlaubt einen InputStream für ein URL zu holen; mit diesem kann die Ressource gelesen werden

• Mit getContent kann der gesamte Inhalt der URL-Ressource geholt werden

• Mit openConnection wird eine URLConnection geöffnet

������������������������ A����A����A����A���� �������������������� ���"�������������������������������� ������������������

������������������������ ���'�����# ���)"�(��2��(��2��(��2��(��2� E��A�������5�������public URL(String protocol, String host, int port, String file)

throws MalformedURLException

������������������������ A����"A����"A����"A����" ��������� ��������') �(��2��(��2��(��2��(��2� �5�������

������������������������ A����"A����"A����"A����"����� #�D�����') �(��2��(��2��(��2��(��2� �5�������

������������������������ ���D�������� ���D��������') �(��2��(��2��(��2��(��2� �5�������

Page 22: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 22�������������� ��������������

���������������������������

Beipiel URL: Sichern eine Remote-Resource (1)

� Das folgende Beispiel liest eine Ressource und sichert den Inhalt in einer Datei

• Die URL wird mit der in der Kommandozeile gegebenen Adresse der Ressource erzeugt

• Es wird eine Datei und ein OutputStream auf die Datei erzeugt

• Es wird auf den InputStream der URL zugegriffen

������������������������ ��������?1������������������������ ��������?1

������������������������ �������������������� ������/

������������������������ ������������������������ ���������������� ����'�����# !"��#�)/

��%��%��%��% /���"��� 0"�2�2�2�2 ���'��#� .!)1����������� ���"0"�2�2�2�2 F�������������'��#� :!)1 ��������� ��"0"������������')1

Page 23: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 23�������������� ��������������

���������������������������

Beipiel URL: Sichern eine Remote-Resource (2)

• Die Daten werden gelesen und auf den File ausgegeben

• Wichtig ist das Abfangen der entsprechenden Exceptions

������������ ��1�%��%��%��%� !"�"0"�2�2�2�2 �%��%��%��%� :..!12(��2(��2(��2(�� ''�� 0"������'�))"=0"�:)"/����2���'�*".*"��)1

>��������')1�������')1

>"����(����(����(����( 'E��A�������5������� )"/�%��������������'��������#'))1�%�������':)1

>"����(����(����(����( ' �5������� )"/�%��������������'��������#'))1�%�������':)1

>>

>

Page 24: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 24�������������� ��������������

���������������������������

5��������5��������5��������5��������

� Netzwerkkommunikation ist grundsätzlich eine unsichere Sache

� Es gibt daher eine Vielzahl von Exceptions, die die möglichen Pannen gut verdeutlichen

Exception-Hierarchie: �5������� �5������� �5������� �5������� : Basisklasse für alle Exceptions mit IO

E��A�������5�������E��A�������5�������E��A�������5�������E��A�������5������� ungültige URL

����5�����������5�����������5�����������5������� Basisklasse für Exceptions bei Sockets

$���5�������$���5�������$���5�������$���5������� Fehler bei Versuch Socket an eine lokaleAdresse oder Port zu binden

D�����5�������D�����5�������D�����5�������D�����5������� Fehler bei Versuch Socket an eine remoteAdresse oder Port zu verbinden

&�����6�+���5�������&�����6�+���5�������&�����6�+���5�������&�����6�+���5������� Remote Host kann nicht erreicht werden

;��������(���5�������;��������(���5�������;��������(���5�������;��������(���5������� Port konnte nicht erreicht werden

����2�+���5�����������2�+���5�����������2�+���5�����������2�+���5������� Host mit IP-Adresse nicht bekannt

����2������5�����������2������5�����������2������5�����������2������5������� Service bei URL nicht unterstützt

;�������5�������;�������5�������;�������5�������;�������5������� z.B. TCP Fehler

�������� �5������� �������� �5������� �������� �5������� �������� �5�������

����6�����5�����������6�����5�����������6�����5�����������6�����5������� Timeout für Socket-Operation

Page 25: Networking - ssw.uni-linz.ac.at€¦ · Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 ˘ ˇˆ˙ ˘˝ˇ˛ˇ ˙˚˜ Networking Motivation Grundlagen von Sockets

Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 25�������������� ��������������

���������������������������

Literatur

� Horstmann, Cornell, Core Java 2, Band2 Expertenwissen, Markt und Technik, 2002: Kapitel 3

� Krüger, Handbuch der Java-Programmierung, 3. Auflage, Addison-Wesley, 2003, http://www.javabuch.de: Kapitel 45