Domanda

Sto solo imparando come fare rete in Java e il primo semplice esempio di come ottenere il tempo da un server NTP continua a lanciare una ConnectException. Copierò e incollerò il codice, ma ho la sensazione che debba essere qualcosa non correlato al codice poiché questo codice è uscito da un libro.

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);
    }
}

Il comando che sto usando per eseguire questo è:

java AskTime us.pool.ntp.org

Aggiornamento: dopo aver letto i consigli di msaeed ho cambiato la porta in 123 e ora mi viene detto che la connessione è stata rifiutata invece che la connessione è scaduta. Quindi penso che msaeed abbia ragione, qualcuno ha idea di cos'altro devo comunicare per ricevere un orario?

È stato utile?

Soluzione

Quindi apparentemente questo codice utilizza il vecchio DAYTIME che utilizza la porta 13. NTP protocol utilizza la porta 123 e richiede un po ' più comunicazione. Molti server NTP hanno smesso di supportare le query DAYTIME .

Il progetto NTP fornisce un codice di esempio per un client NTP in Java qui .

Altri suggerimenti

msaeed ha ragione. Puoi usare il tuo codice con il server DAYTIME come 'time.nist.gov' - oppure sceglierne uno qualsiasi da questo elenco

Aggiorna Se il tuo obiettivo finale è quello di comunicare con il server NTP (invece di giocare con i socket come hai detto inizialmente) dovresti guardare Commons Net . In effetti, dovresti guardare la sua fonte in entrambi i modi: Commons Net implementa alcuni protocolli di rete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top