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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top