Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort
Download: - openbook, ca. 21,3 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / Java 7 - Mehr als eine Insel | vor >>
Java 7 - Mehr als eine Insel von Christian Ullenboom Das Handbuch zu den Java SE-Bibliotheken
Java 7 - Mehr als eine Insel Galileo Computing 1433 S., 2012, geb. 49,90 Euro, ISBN 978-3-8362-1507-7 |
| 11 Netzwerkprogrammierung
|  | 11.1 Grundlegende Begriffe
|  | 11.2 URI und URL
|  |  | 11.2.1 Die Klasse URI
|  |  | 11.2.2 Die Klasse URL
|  |  | 11.2.3 Informationen über eine URL *
|  |  | 11.2.4 Der Zugriff auf die Daten über die Klasse URL
|  | 11.3 Die Klasse URLConnection *
|  |  | 11.3.1 Methoden und Anwendung von URLConnection
|  |  | 11.3.2 Protokoll- und Content-Handler
|  |  | 11.3.3 Im Detail: vom URL zur URLConnection
|  |  | 11.3.4 Der Protokoll-Handler für Jar-Dateien
|  |  | 11.3.5 Basic Authentication und Proxy-Authentifizierung
|  | 11.4 Mit GET und POST Daten übergeben *
|  |  | 11.4.1 Kodieren der Parameter für Serverprogramme
|  |  | 11.4.2 Eine Suchmaschine mit GET-Request ansprechen
|  |  | 11.4.3 POST-Request absenden
|  | 11.5 Host- und IP-Adressen
|  |  | 11.5.1 Lebt der Rechner?
|  |  | 11.5.2 IP-Adresse des lokalen Hosts
|  |  | 11.5.3 Das Netz ist klasse
|  |  | 11.5.4 NetworkInterface
|  | 11.6 Mit dem Socket zum Server
|  |  | 11.6.1 Das Netzwerk ist der Computer
|  |  | 11.6.2 Sockets
|  |  | 11.6.3 Eine Verbindung zum Server aufbauen
|  |  | 11.6.4 Server unter Spannung: die Ströme
|  |  | 11.6.5 Die Verbindung wieder abbauen
|  |  | 11.6.6 Informationen über den Socket *
|  |  | 11.6.7 Reine Verbindungsdaten über SocketAddress *
|  | 11.7 Client-Server-Kommunikation
|  |  | 11.7.1 Warten auf Verbindungen
|  |  | 11.7.2 Ein Multiplikationsserver
|  |  | 11.7.3 Blockierendes Lesen
|  |  | 11.7.4 Von außen erreichbar sein *
|  | 11.8 Apache HttpComponents und Commons Net *
|  |  | 11.8.1 HttpComponents
|  |  | 11.8.2 Apache Commons Net
|  | 11.9 Arbeitsweise eines Webservers *
|  |  | 11.9.1 Das Hypertext Transfer Protocol (HTTP)
|  |  | 11.9.2 Anfragen an den Server
|  |  | 11.9.3 Die Antworten vom Server
|  |  | 11.9.4 Webserver mit com.sun.net.httpserver.HttpServer
|  | 11.10 Verbindungen durch einen Proxy-Server *
|  |  | 11.10.1 System-Properties
|  |  | 11.10.2 Verbindungen durch die Proxy-API
|  | 11.11 Datagram-Sockets *
|  |  | 11.11.1 Die Klasse DatagramSocket
|  |  | 11.11.2 Datagramme und die Klasse DatagramPacket
|  |  | 11.11.3 Auf ein hereinkommendes Paket warten
|  |  | 11.11.4 Ein Paket zum Senden vorbereiten
|  |  | 11.11.5 Methoden der Klasse DatagramPacket
|  |  | 11.11.6 Das Paket senden
|  | 11.12 E-Mail *
|  |  | 11.12.1 Wie eine E-Mail um die Welt geht
|  |  | 11.12.2 Das Simple Mail Transfer Protocol und RFC 822
|  |  | 11.12.3 POP (Post Office Protocol)
|  |  | 11.12.4 Die JavaMail API
|  |  | 11.12.5 E-Mails mittels POP3 abrufen
|  |  | 11.12.6 Multipart-Nachrichten verarbeiten
|  |  | 11.12.7 E-Mails versenden
|  |  | 11.12.8 Ereignisse und Suchen
|  | 11.13 Tiefer liegende Netzwerkeigenschaften *
|  |  | 11.13.1 Internet Control Message Protocol (ICMP)
|  |  | 11.13.2 MAC-Adresse
|  | 11.14 Zum Weiterlesen
# 11 Netzwerkprogrammierung »In einer Fünftelsekunde kannst du eine Botschaft rund um die Welt senden. Aber es kann Jahre dauern, bis sie von der Außenseite eines Menschenschädels nach innen dringt.« – Charles F. Kettering (1876–1958) Verbindungen von Rechnern unter Java aufzubauen ist ein Kinderspiel – somit ist die Netzwerkprogrammierung, die heutzutage noch aufwändig und kompliziert ist, schnell erledigt. Für Sun Microsystems waren Netzwerke das zentrale Computerthema, deshalb hat die Firma den Slogan »The Network is the Computer« gleich als Warenzeichen eingetragen. Die Netzwerk-API ist mehrheitlich im Paket java.net zu finden, wobei es auch zwei Klassen in javax.net gibt. ## 11.1 Grundlegende Begriffe Wenn ein Anwenderprogramm Daten in einem Netzwerk wie dem Internet erfragt, sind eine ganze Reihe von Technologien und Standards involviert. Die folgenden Abschnitte erklären die zentralen Begriffe kurz. Ein am Netzwerk angeschlossener Rechner heißt Host. Jeder Host bekommt eine eigene IP-Adresse, sodass er eindeutig im Netz identifiziert ist. Als IP-Adressen sieht die Version IP4v eine 32-Bit-Zahl vor und das neuere IPv6 eine 128-Bit-Zahl. Da IP-Adressen wie 195.190.9.30 (IPv4) oder 2001:252:0:1::2008:6 (IPv6) nicht leicht zu merken sind, werden Hostnamen statt der IP-Nummern verwendet. So steht zum Beispiel tutego.com für die IP-Adresse 195.190.9.30. Symbolische Namen haben noch einen weiteren Vorteil: Die IP-Adresse kann sich ändern, etwa wenn ein Server von einem Standort zum anderen zieht, ohne dass der Benutzer davon etwas mitbekommt. Die Zuordnung zwischen Name und IP-Adresse übernimmt ein Dienst namens DNS (Domain Name Service). Online lässt sich dieser Dienst etwa bei Heise auf der Webseite http://www.heise.de/netze/tools/dns-abfrage nutzen. Kommunizieren zwei Applikationen via Internet miteinander, tauschen sie Datenpakete aus. Der Datenstrom einer Anwendung wird vom Netzwerkstack in viele kleine Pakete zerlegt. Jedes Paket macht sich dann, unabhängig von den anderen, im Netzwerk auf die Reise zum Empfänger. Der wichtigste Standard für die Vermittlung eines Pakets ist das Internet Protocol (IP). Ein IP-Paket ist ein Bytefeld, das aus einem Körper (engl. body) und Zusatzinformationen (engl. header) besteht. Die Weiterleitung der Pakete von einem Rechner zum nächsten wird von einem Router übernommen. Dieser spezielle Rechner gibt Pakete zwischen verschiedenen Netzwerken weiter und erzeugt somit eine Route von einem Rechner zum anderen. Es existieren verschiedene Routing-Protokolle, die es Routern erlauben, untereinander Informationen auszutauschen, damit immer der optimale Weg für den Datenstrom im Netzwerk gewählt werden kann. Ein Paket soll sich ja nicht im Kreis bewegen oder über zu viele Router laufen, wenn es kürzere Pfade gibt. Welchen Pfad ein Paket vom eigenen Rechner zum Server nimmt, zeigen Tools wie traceroute (http://de.wikipedia.org/wiki/Traceroute). Für IP-Pakete vom Server www.heise.de zu einem gewünschten Rechner listet die Webseite unter http://www.heise.de/netze/tools/traceroute die Route sowie Zeitinformationen auf. IP ist ein verbindungsloses Protokoll. Das bedeutet, dass Pakete verloren gehen, beschädigt, doppelt oder in der falschen Reihenfolge ankommen können. Und so nutzen Applikationen wie Webbrowser oder E-Mail-Clients nicht direkt das Internet Protocol, sondern ein komfortableres Transportprotokoll, das eine Schicht über den IP-Protokollen (IPv4 oder IPv6) liegt: das Transmission Control Protocol (TCP). Es kümmert sich um die korrekte Reihenfolge der Pakete und fordert sie bei Verlust erneut an. Weil TCP und IP häufig gemeinsam Anwendung finden, entstand die Bezeichnung TCP/IP. TCP ist aber nicht das einzige Protokoll, das über der IP-Vermittlungsschicht sitzt. Zwei weitere Protokolle sind das User Datagram Protocol (UDP) und das Stream Control Transmission Protocol (SCTP). Wenn wir mit der Netzwerk-API von Java programmieren, bekommen wir von der Transport- und Vermittlungsschicht nichts mit. Unser Programmiermodell basiert auf Sockets, die eine API zur TCP-Ebene darstellen. Und da IP unter TCP liegt, befinden sich Einstellungen auf der Vermittlungs- und Router-Ebene außerhalb unseres Einflussbereichs. #### Internet-Standards und RFC Ein RFC (Request For Comment) ist ein Standardisierungsvorschlag, der nicht so förmlich wie traditionelle Normen (DIN, ISO oder IEEE) ist, aber im offenen Internet dennoch eine wichtige Rolle einnimmt und quasi ein De-facto-Standard ist. Jeder RFC wird durch eine eigene Nummer referenziert; so ist das Internet Protocol (das IP in TCP/IP) in RFC 791 und das Protokoll, mit dem E-Mails befördert werden, in RFC 2821 (früher RFC 821) beschrieben. Der Diskussionsprozess selbst ist in RFC 1310 dokumentiert. Der Titel ist »The Internet Standards Process«. Wer selbst Ideen für einen Standard (Proposed Standard) hat, übergibt diese der Internet Engineering Task Force (IETF). Die Vorschläge werden diskutiert und können dann, sofern sie stabil, sinnvoll und verständlich sind, zu einem RFC werden. Falls zwei unterschiedliche Implementierungen existieren, kann dieser Vorschlag spätestens nach einem Jahr offiziell werden. RFCs lassen sich über http://www.rfc-editor.org/ suchen. Die Seite http://rfc-ref.org/ bietet die RFCs im HTML-Format mit Verlinkungen. ### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java 7 – Mehr als eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchempfehlungen
| Java und XML
| Einstieg in Eclipse 3.7
| Android 3
| NetBeans Platform 7
| Java ist auch eine Insel
| Apps entwickeln für Android 4
| Java 7
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de