• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - błąd przy pobieraniu czasu z serwera NTP

0 głosów
502 wizyt
pytanie zadane 3 sierpnia 2019 w Java przez msky Początkujący (250 p.)
edycja 3 sierpnia 2019 przez msky

Cześć, aktualnie próbuję napisać program w Javie, który pobierałby czas z serwera NTP i wyświetlał go. Napisałem taki prosty program: 

import java.io.*;
import java.net.*;

public class Main {
    public static void main(String args[]) throws IOException {
            String host = "vega.cbk.poznan.pl";
            int port = 123;

            Socket socket = new Socket(host, port);

            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String wynik;

            while ((wynik = br.readLine()) != null)
                System.out.println(wynik);


            br.close();
            socket.close();
        }
    }

W odpowiedzi dostaję: 

Exception in thread "main" java.net.ConnectException: Connection timed out: connect

Nie mam pojęcia dlaczego. Dodam, że kiedy host to "time.nist.gov" a port "13" wszystko działa i jako odpowiedź otrzymuję: 

58698 19-08-03 14:50:48 50 0 0 923.7 UTC(NIST)

 

2 odpowiedzi

0 głosów
odpowiedź 2 lutego 2020 przez Oscar Nałogowiec (29,420 p.)
wybrane 19 lipca 2020 przez msky
 
Najlepsza
Na porcie 13 pracuje prosty, stary protokół "daytime", który podaje czas w formacie tekstowym. Współcześnie raczej nie używany, pewnie na tym komputerze, który odpowiada, zainstalowali coś np. inetd, który jako przykład implementuje daytime. Prawdziwy NTP pracuje po UDP na porcie 123 i jest nieco bardziej skompilowany.
0 głosów
odpowiedź 3 sierpnia 2019 przez mbabane Szeryf (79,240 p.)
Wydaje mi się, że to nie kwestia Twojego kodu, a tego serwera z którym próbujesz się połączyć.
komentarz 4 sierpnia 2019 przez msky Początkujący (250 p.)
Tylko, że błąd wyskakuje na praktycznie wszystkich serwerach NTP z których próbuje pobrać czas.
komentarz 4 sierpnia 2019 przez msky Początkujący (250 p.)

Korzystając z puli serwerów dla Polski (pl.pool.ntp.org), Europy (europe.pool.ntp.org) i świata (pool.ntp.org) próbując na portach 13, 123, 37 wyrzuca ten sam błąd. Działa tylko pula serwerów NIST na porcie 13 (https://tf.nist.gov/tf-cgi/servers.cgi).

1
komentarz 4 sierpnia 2019 przez mbabane Szeryf (79,240 p.)
Może wymagają one jakiegoś specjalnego uwierzytelniania, a ten jeden jest jakiś mega prosty i działa.

Podobne pytania

0 głosów
1 odpowiedź 496 wizyt
pytanie zadane 21 października 2016 w Nasze projekty przez silverado Nowicjusz (120 p.)
0 głosów
1 odpowiedź 643 wizyt
pytanie zadane 21 października 2017 w Java przez niezalogowany
0 głosów
0 odpowiedzi 621 wizyt
pytanie zadane 21 stycznia 2017 w Java przez nemezisso Użytkownik (860 p.)

93,765 zapytań

142,721 odpowiedzi

323,372 komentarzy

63,359 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...