La conexión a un servidor NTP sigue fallando (Java)
-
22-07-2019 - |
Pregunta
Estoy aprendiendo cómo hacer redes en Java y el primer ejemplo simple de obtener el tiempo de un servidor NTP sigue lanzando una excepción de conexión. Copiaré y pegaré el código, pero tengo la sensación de que debe ser algo no relacionado con el código ya que este código salió de 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);
}
}
El comando que estoy usando para ejecutar esto es:
java AskTime us.pool.ntp.org
Actualización: Después de leer el consejo de msaeed, cambié el puerto a 123 y ahora me dicen que la conexión se ha rechazado en lugar de que la conexión haya expirado. Entonces, creo que msaeed tiene razón, ¿alguien tiene alguna idea de qué más necesito comunicar para recibir un tiempo?
Solución
Entonces, aparentemente, este código usa el antiguo DAYTIME
protocolo que usa el puerto 13. NTP
protocol usa el puerto 123 y requiere un poco Más comunicación. Muchos de los servidores NTP
dejaron de admitir consultas DAYTIME
.
El Proyecto NTP proporciona un código de muestra para un cliente NTP
en Java aquí .
Otros consejos
msaeed es correcto. Puede usar su código con el servidor DAYTIME como 'time.nist.gov' - o elegir cualquier otro de esta lista
Actualización Si su objetivo final es comunicarse con el servidor NTP (en lugar de jugar con sockets como ha dicho inicialmente), debe mirar Commons Net . De hecho, debe mirar su fuente de cualquier manera: Commons Net implementa bastantes protocolos de red.