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.10 Verbindungen durch einen Proxy-Server * In vielen größeren Unternehmen bekommt ein einzelner Client keinen direkten Zugriff auf das Internet. Vielmehr laufen die Verbindungen über eine Zwischenstelle, die Proxy genannt wird. Dieser Proxy cacht zum Beispiel Webseiten und erhöht damit die Performance. Gleichzeitig ist ein Proxy Teil einer wichtigen unternehmensweiten Sicherheitsstrategie. Seiten können geloggt und ausgefiltert werden – welcher Chef möchte schon, dass seine Mitarbeiter laufend Firmenkugelschreiber auf eBay verticken? ### 11.10.1 System-Properties Java nutzt zur Festlegung der Proxy-Eigenschaften zwei beziehungsweise drei System-Properties, die unter http://tutego.de/go/netproperties genauer beschrieben sind: http.proxyHost: Adresse des Rechners, der als Proxy dient http.proxyPort: Port des Proxy-Rechners Um nun in Applikationen einen Proxy einzusetzen, sind die Eigenschaften zu setzen; eine Möglichkeit besteht über die Kommandozeile mit –D, eine andere über System.setProperty():
    System.setProperty( "proxySet", "true" );
    System.setProperty( "proxyHost", "myProxyHost" );
    System.setProperty( "proxyPort", "myProxyPort" );
Für Applets sind diese Eigenschaften automatisch über die Browser-Einstellungen gesetzt. Wenn der Proxy eine Autorisierung erfordert – das ist häufig dann der Fall, wenn der Client einen Fehler mit 407 (authentication required) bekommt –, müssen ihm ein Benutzername und ein Passwort übermittelt werden. Hier gibt es bedauerlicherweise eine ganze Reihe unterschiedlicher Lösungen, die von den Java-Versionen abhängen. Funktionieren sollte im Allgemeinen:
    System.setProperty( "http.proxyUser",     "myProxyUser" );
    System.setProperty( "http.proxyPassword", "myProxyPasswort" );
Soll ein sicherer Webserver über eine Proxy-Verbindung kontaktiert werden, lassen sich mit installierter Java Secure Socket Extension (JSSE) https.ProxyHost und https.ProxyPort passend setzen. Im Fall von SOCKS sind die Eigenschaften socksProxyHost für den Server und socksProxyPort für den Port zu setzen. Letzterer steht standardmäßig auf 1080. ### 11.10.2 Verbindungen durch die Proxy-API Die Einstellungen mit System.setProperty() sind global und nicht flexibel genug, um verschiedene URLs mit verschiedenen Proxy-Servern anzusprechen. Daher hat Sun eine Proxy-API entworfen, mit der zwei Dinge möglich sind: Proxy-Objekte repräsentieren einen Proxy-Server und lassen sich später beim Aufbau von Verbindungen angeben. Die Verbindungen laufen anschließend über den Proxy-Server. Aufzählungen aller Proxy-Server, die einen bestimmten URI behandeln #### Ein Proxy-Objekt aufbauen Ein Proxy-Objekt lässt sich über einen parametrisierten Konstruktor aufbauen. Etwa so:
    SocketAddress addr = new InetSocketAddress( "proxy.myserver.com", 8080 );
    Proxy proxy = new Proxy( Proxy.Type.HTTP, addr );
Der erste Parameter steht für den Proxy-Typ. Drei Konstanten sind deklariert: DIRECT: kein Proxy, sondern direkte Verbindung HTTP: Proxy mit HTTP-Protokoll SOCKS: SOCKS v4 bzw. v5 Proxy #### Verbindungen über Proxy-Server aufbauen Die Proxy-Objekte sind dann anzugeben, wenn Verbindungen aufgebaut werden, etwa bei URLConnection:
    URL url = new URL( "http://tutego.de/" );
    URConnection conn = url.openConnection( proxy );
oder bei Socket:
    Socket socket = new Socket( proxy );
#### Proxy-Server für URI ermitteln Welche Proxy-Server einen bestimmten URI behandeln, ermittelt der ProxySelector. Er liefert für einen URI mit select() eine Liste von Proxy-Objekten: Listing 11.18: com/tutego/insel/net/ListAllProxies.java, main()
    List<Proxy> proxies = ProxySelector.getDefault().select( new URI( "http://tutego.de/" ) );
    for ( Proxy proxy : proxies )
    {
      System.out.println( "Proxy Typ: " + proxy.type() );

      InetSocketAddress addr = (InetSocketAddress) proxy.address();

      if ( addr == null )
        System.out.println( "Kein Proxy" );
      else
    System.out.printf( "Proxy Hostname %s und Port %s.",
                       addr.getHostName(), addr.getPort() );
    }
Auch Unterklassen von ProxySelector sind möglich. Damit lässt sich erreichen, dass je nach Kriterium ein eigener Proxy-Server zurückgegeben wird. Die eigene Klasse muss dazu die select()-Methode realisieren. ### 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