Question

Je viens d'apprendre à faire du réseautage en Java et le premier exemple simple permettant d'obtenir l'heure d'un serveur NTP continue de générer une exception ConnectException. Je vais copier et coller le code, mais j’ai le sentiment que ce doit être quelque chose qui n’est pas lié au code puisque ce code est sorti d’un livre.

import java.io.*;
import java.net.*;

public class AskTime {

    public static void main(String a[]) throws Exception {
        if(a.length != 1) {
            System.out.println("your lame");
            System.exit(0);
        }

        String machine = a[0];
        final int daytimeport = 13;
        Socket so = new Socket(machine,daytimeport);
        BufferedReader br = new BufferedReader(new InputStreamReader(so.getInputStream() ) );
        String time = br.readLine();
        System.out.printf("%s says it is %s %n", machine, time);
    }
}

La commande que j'utilise pour l'exécuter est la suivante:

java AskTime us.pool.ntp.org

Mise à jour: Après avoir lu le conseil de msaeed, j'ai changé le port en 123 et on me dit maintenant que la connexion est refusée au lieu que la connexion a expiré. Donc, je pense que msaeed a raison, est-ce que quelqu'un a une idée de ce que je dois encore communiquer pour recevoir une heure?

Était-ce utile?

La solution

Donc, apparemment, ce code utilise l'ancien protocole DAYTIME qui utilise le port 13. Le protocole NTP utilise le port 123 et nécessite un bit plus de communication. De nombreux serveurs NTP ont cessé de prendre en charge les requêtes DAYTIME .

Le projet NTP fournit un exemple de code pour un client NTP en Java ici .

Autres conseils

msaeed a raison. Vous pouvez utiliser votre code avec le serveur DAYTIME comme 'time.nist.gov' - ou en choisir un autre dans cette liste

Mettre à jour Si votre objectif final est de communiquer avec le serveur NTP (au lieu de jouer avec des sockets comme vous l'avez dit initialement), vous devez consulter Réseau commun . En fait, vous devriez regarder sa source de toute façon - Commons Net implémente pas mal de protocoles réseau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top