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.
Neueste Kommentare
Noch keine Kommentare zu Java-Streams: So lassen sich I/O-Funktionen per Fernzugriff nutzen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.