/* * Vorlesung "Vernetzte Systeme" WS 2000/2001, Prof. Dr. F. Mattern * ---------------------------------------------------------------- * Einfachste Implementierung eines HTTP User Agent. Kompilierung mittels * * [mustermann@rif27]$ javac UserAgent.java * * Danach kann die kompilierte Klasse wie folgt aufgerufen werden: * * [mustermann@rif27]$ java UserAgent http://www.inf.ethz.ch/ * * * Mehr Informationen zur Kompilierung von Java unter Unix und Win32: * http://java.sun.com/docs/books/tutorial/getStarted/cupojava/index.html * * Nützliche Infos zur Java Sprache im Allgemeinen (zur Lösung von 19.b) * http://java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html * * Weit mehr Informationen (die zur Lösung der Aufgabe aber nicht notwendig * sind) finden sich auf Sun's "The Java Tutorial" Seiten: * * http://java.sun.com/docs/books/tutorial/index.html * * sowie in der API Dokumentation * * http://java.sun.com/j2se/1.3/docs/api/index.html */ import java.net.*; // Hier importieren wir unsere URL "toolbox" import java.io.*; // Damit können wir Zeichen lesen und ausgeben /* In Java muss jede Methode (Funktion) und Variable innerhalb einer Klasse * bzw einem Objekt (einer Instanz einer Klasse) definiert sein: Java erlaubt * keinerlei globale Funktionen oder Variablen. Deshalb ist Grundlage eines * jeden Java-Programms eine Klassendefinition, in unserem Fall die Klasse * eines UserAgent: */ public class UserAgent { /* Der Einstiegspunkt jeder Java Anwendung ist die "main" Methode. Beim * Aufrufen des Java Interpreter ("java") gibt man den Namen der Klasse * an, welche man aufrufen möchte (in unserem Falle "UserAgent"). Der * Interpreter ruft dann eben jene "main" Methode innerhalb diese Klasse * auf. */ public static void main(String[] args) throws Exception { // Die Webseite, die geladen werden soll, wird uns als 1. Argument // (Achtung: es geht bei "0" los) uebergeben. URL myURL = new URL (args[0]); // Wenn es eine 'korrekte' URL ist, dann koennen wir uns nun // einfach mit der "openStream" Methode der URL Klasse mit dem // Zielrechner verbinden und (wie in Uebungsblatt 2 gelernt) die // Seite anfordern. Da die URL Klasse bereits "weiss", wie man // Web Seiten anfordert, müssen wir lediglich die Ausgabe mit einem // für uns lesbaren "Datenstrom" (InputStreamReader) verbinden. InputStreamReader in = new InputStreamReader(myURL.openStream()); // Die "read" Methode unseres Datenstroms liefert das nächste Byte // oder die Zahl "-1", wenn das Ende des Stroms erreicht ist. int nextchar; // in count merken wir uns, wieviele Bytes gelesen wurden. int count = 0; while ((nextchar = in.read()) != -1) { // Wenn wir ein Zeichen im Datenstrom gefunden haben, können wir // es mit print ausgeben. count++; } System.out.println(count + " Bytes"); // Wenn wir hier sind, ist das Ende des Datenstroms erreicht worden // und wir können die Verbindung wieder schliessen. in.close(); } // of main } // of UserAgent class