Pergunta

Eu estou apenas aprendendo a fazer networking em Java e o primeiro exemplo simples de conseguir o tempo a partir de um servidor NTP continua jogando um ConnectException. Vou copiar e colar o código, mas eu tenho a sensação de que deve haver algo não código relacionado uma vez que este código saiu de um livro.

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

O comando que estou usando para executar esse é:

java AskTime us.pool.ntp.org

Update: Depois de ler o conselho de msaeed eu mudei a porta para 123 e agora estou sendo dito conexão recusada em vez de conexão expirou. Então eu acho que msaeed é certo, alguém tem alguma idéia do que eu necessidade de comunicar a receber cada vez?

Foi útil?

Solução

Então, aparentemente esse código usa o velho DAYTIME protocolo essa porta usos 13. protocolo NTP usos porta 123 e requer um pouco mais de comunicação. Muitos dos servidores NTP deixou de apoiar consultas DAYTIME.

O Projeto NTP fornece um código de exemplo para um cliente NTP em Java aqui .

Outras dicas

msaeed é certo. Você pode usar seu código com o servidor DAYTIME como 'time.nist.gov' - ou escolher qualquer outro de esta lista

Atualizar Se o seu objetivo final é para se comunicar com o servidor NTP (em oposição a jogar com soquetes como você disse inicialmente) você deve olhar para Commons Net . Na verdade, você deve olhar para a sua fonte de qualquer forma - implementos Commons Net bastante alguns protocolos de rede

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top