Соединение с сервером NTP продолжает терпеть неудачу (Java) - PullRequest
2 голосов
/ 04 августа 2009

Я только учусь работать в сети на Java, и первый простой пример получения времени от NTP-сервера продолжает вызывать исключение ConnectException. Я скопирую и вставлю код, но у меня есть ощущение, что это должно быть что-то не связанное с кодом, так как этот код вышел из книги.

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

Команда, которую я использую, чтобы выполнить это:

java AskTime us.pool.ntp.org

Обновление: Прочитав совет msaeed, я изменил порт на 123, и теперь мне говорят, что соединение отказано, а время соединения истекло. Так что я думаю, что msaeed прав, кто-нибудь знает, что еще мне нужно сообщить, чтобы получить время?

Ответы [ 2 ]

4 голосов
/ 04 августа 2009

Таким образом, очевидно, что этот код использует старый DAYTIME протокол , который использует порт 13. NTP протокол использует порт 123 и требует немного больше связи. Многие из NTP серверов перестали поддерживать DAYTIME запросов.

Проект NTP предоставляет пример кода для NTP клиента в Java здесь .

1 голос
/ 04 августа 2009

msaeed верно. Вы можете использовать свой код на сервере DAYTIME, например time.nist.gov, или выбрать любой другой из этого списка

Обновление Если ваша конечная цель - установить связь с NTP-сервером (в отличие от игры с сокетами, как вы сказали вначале), вам следует обратиться к Commons Net . Фактически, вы должны посмотреть на его источник в любом случае - Commons Net реализует довольно много сетевых протоколов.

...