Client pour protocole Daytime

Le protocole Daytime a été mis au point, lorsque le réseau Internet était encore jeune, pour faire des tests et effectuer des mesures de temps de réponse.

Selon la RFC 867, un serveur qui offre le service Daytime est en attente de la connexion d'un client sur son port 13. Lorsqu'un client se connecte, il lui envoie une chaîne de caractères (format non défini) indiquant la date et l'heure, puis ferme immédiatement la connexion.

Ce protocole est de moins en moins utilisé, mais est encore supporté par quelques serveurs, surtout aux USA.

Dans l'exemple suivant, le programme se connecte à un serveur et affiche dans la console la chaîne de caractères reçue :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class GetDaytime {
    public static void main(String args[]) {
        try {
            String ligne;
            
            // création du socket et tentative de connexion au serveur
            Socket soc = new Socket("time-a-wwv.nist.gov", 13);
            
            BufferedReader reader
                    = new BufferedReader(
                        new InputStreamReader(soc.getInputStream()));

            do {
                ligne = reader.readLine();
                if (ligne != null && ligne.trim().length() > 0) {
                    System.out.println(ligne);
                }
            } while (ligne != null);

            reader.close();
            soc.close();
            
        } catch (IOException ioe) {
            System.err.println(ioe);
        }
    }
}

On a utilisé une boucle et non une seule instruction de lecture, car il semble que la plupart des serveurs envoient une fin de ligne avant d'envoyer la date et l'heure. Ah ces bons vieux serveurs de temps...

C:\>java GetDaytime
57441 16-02-23 14:15:09 00 0 0 668.6 UTC(NIST) *

C:\>