2009-08-04 5 views
2

J'apprends juste à faire du réseautage en Java et le premier exemple simple d'obtention de l'heure depuis un serveur NTP continue de lancer une exception ConnectException. Je vais copier et coller le code, mais j'ai le sentiment qu'il doit y avoir quelque chose qui n'est pas lié au code puisque ce code est sorti d'un livre.La connexion à un serveur NTP continue à échouer (Java)

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 je utilise pour exécuter c'est:

java AskTime us.pool.ntp.org

Mise à jour: Après avoir lu les conseils de msaeed j'ai changé le port à 123 et je suis maintenant connexion dit refusé au lieu de la connexion a expiré. Donc, je pense que msaeed a raison, est-ce que quelqu'un a une idée de ce que j'ai besoin de communiquer pour recevoir du temps?

+0

Oh oui, et la partie "votre boiteux" n'était pas du code dans le livre tout le reste je suis assez sûr est identique. – Anton

Répondre

4

Apparemment, ce code utilise l'ancien DAYTIME protocol qui utilise le port 13. NTP protocol utilise le port 123 et nécessite un peu plus de communication. La plupart des serveurs NTP ont cessé de prendre en charge les requêtes DAYTIME.

Le projet NTP fournit un exemple de code pour un client NTP dans Java here.

+0

Une idée de quoi d'autre a besoin pour demander une heure? – Anton

+0

mise à jour de la réponse pour inclure le lien vers l'exemple de code! – notnoop

1

msaeed a raison. Vous pouvez utiliser votre code avec le serveur DAYTIME comme « time.nist.gov » - ou choisir un autre de this list

Mise à jour Si votre objectif final est de communiquer avec le serveur NTP (par opposition à jouer avec les sockets que vous » J'ai dit au début) vous devriez regarder Commons Net. En fait, vous devriez regarder sa source de toute façon - Commons Net met en œuvre un certain nombre de protocoles réseau.

+0

Ses deux ty pour l'aide. – Anton

Questions connexes