Ligar a um servidor NTP continua falhando (Java)
-
22-07-2019 - |
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?
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
.