Java-Streams: So lassen sich I/O-Funktionen per Fernzugriff nutzen

Durch den Einsatz von Javas Networking-Klassen wird eine Kommunikation zwischen zwei oder mehr Clients und Servern über eine Netzwerk- beziehungsweise eine Fernverbindung ermöglicht. ZDNet zeigt an Beispielen, wie das funktioniert.

In dem Artikel „Einfach und übertragbar: Mit Java-Streams Daten lesen und schreiben“ wurden bereits die von der Java-Plattform bereitgestellten I/O-Klassen, -Schnittstellen und -Operationen vorgestellt. Jetzt sollen die I/O-Funktionen der Java-Plattform näher erläutert werden. Wie können die zum Lesen und Schreiben von Daten auf lokalen Dateisystemen eingesetzten Verfahren, Klassen und Datentypen auch per Fernzugriff genutzt werden?

Networking im Überblick

Ein Computer ist gewöhnlich mit einer physischen Verbindung ausgestattet, über die alle für ihn bestimmten Daten eingehen müssen. Das Problem dabei ist, dass zahlreiche verschiedene, mittels unterschiedlicher Protokolle übertragene Datentypen diese eine physische Verbindung nutzen müssen – und das auch noch gleichzeitig. Wie kann das Digitalgerät all dies schaffen? Mithilfe eines als Ports bekannten Konzepts stellt das Gerät für seine Umgebung eine simple Fassade bereit. Sie erweckt den Eindruck, es verfüge über eine unbegrenzte Anzahl an physischen Verbindungen.

Ein Port ist lediglich eine Nummer, die ein Computersystem zur Weiterleitung von Daten an die entsprechende Anwendung benutzt. Manche Portnummern, die auch als Well-Known-Ports bezeichnet werden, sind für bestimmte Dienste wie HTTP, FTP und SMTP reserviert. Diese Well-Known-Ports umfassen die Nummern 0 bis 1023. Die Portnummer wird, nebst den Identifikationsdaten des Empfängerrechners, zusammen mit den relevanten Daten über eine Netzwerkverbindung gesendet. Dieser Umstand macht die Kommunikation von Anwendungen auch für verschiedene Arten von Angriffen, etwa durch Hacker, anfällig. Doch das ist ein anderes Thema.

Bei Java-Netzwerkanwendungen spielen im Allgemeinen zwei Kommunikationsarten eine Rolle: TCP (verbindungsbasiert) und UDP (verbindungslos). Bei der verbindungsbasierten Kommunikation assoziiert eine Anwendung die als Sockets bezeichneten Endpunkte mit bestimmten Portnummern. Somit leitet das System alle für die Anwendung bestimmten Daten an einen spezifischen Port. Bei verbindungsloser Kommunikation werden dagegen einzelne Pakete mit einer Portnummer versehen und an ihre Ziele übermittelt.

Diese technischen Aspekte können mitunter recht komplex erscheinen. Aber zum Glück gibt es ja das java.net-Paket. Die in diesem Paket enthaltenen Klassen und Schnittstellen bieten einen einheitlichen Satz von Abstraktionen für Anwendungen in der Netzwerkkommunikation.

Das java.net-Paket

Das von Sun bereitgestellte java.net-Paket beinhaltet eine Socket-Klasse, die in einer aus mehreren Verbindungen bestehenden Kommunikation zwischen zwei Java-Programmen genau eine Verbindung darstellt. Die Socket-Klasse verbirgt die komplexen Details der einzelnen nativen Systeme gegenüber dem Java-Programm. Die java.net.Socket-Klasse ermöglicht Java-Programmen eine plattformunabhängige Netzwerkkommunikation. Außerdem bietet das java.net-Paket eine ServerSocket-Klasse. Diese repräsentiert eine von serverorientierten Anwendungen benutzte Verbindung zur Annahme von Datenströmen, die von Client-Anwendungen stammen.

Das java.net-Paket bietet Klassen und Schnittstellen zum Schreiben von Programmen, die entweder mit TCP oder UDP arbeiten. Anwendungen, die über TCP kommunizieren, benutzen die Klassen URL, URLConnection, Socket und ServerSocket. Anwendungen, die UDP einsetzen, verwenden die Klassen DatagramPacket, DatagramSocket und MulticastSocket.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Java-Streams: So lassen sich I/O-Funktionen per Fernzugriff nutzen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *