L'accès à des ressources sur le World Wide Web, ou plus généralement, sur l'Internet, s'intègre naturellement dans le modèle des flots. Voici deux exemples de connexion d'une application à un service Internet.
Le programme suivant connecte un flot d'entrée à une ressource Web spécifiée par son URL, transforme ce flot d'octets en un flot de caractères et le place dans un tampon ; les lignes successivement lues sur ce flot d'entrée sont copiées sur la sortie standard de l'application (jusqu'à ce que readLine() retourne null).
import java.net.URL;
import java.net.MalformedURLException;
import java.io.*;
class URLReader {
public static void main(String[] args)
throws MalformedURLException, IOException {
URL url = new URL("http://www.enpc.fr/");
BufferedReader in =
new BufferedReader(
new InputStreamReader(
url.openStream()));
String ligne;
while ((ligne = in.readLine()) != null)
System.out.println(ligne);
in.close();
}
}
Le programme suivant connecte un flot d'entrée à un port Internet spécifié par un nom de machine et un numéro de port ; ce numéro, 13, est celui d'un serveur dont la réponse est une ligne contenant la date et l'heure courante ; la connexion à ce port utilise le protocole TCP. Ce flot d'entrée est ensuite transformé en un flot de caractères, puis placé dans un tampon ; la ligne lue sur ce flot d'entrée est simplement copiée sur la sortie standard de l'application.
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
class DateReader {
public static void main(String[] args)
throws UnknownHostException, IOException {
String nomHote = args.length>0 ? args[0] : "localhost";
Socket s = new Socket(nomHote, 13);
BufferedReader reponse =
new BufferedReader(
new InputStreamReader(
s.getInputStream()));
String date = reponse.readLine();
System.out.println(nomHote + " : " + date);
s.close();
}
}