Anschluss an einen NTP-Server hält versagt (Java)
-
22-07-2019 - |
Frage
Ich bin nur zu lernen, wie in Java und dem ersten einfachen Beispiel immer die Zeit von einem NTP-Server zu tun Vernetzung hält einen Connect werfen. Ich werde den Code kopieren und einfügen, aber ich habe das Gefühl, es ist etwas nicht Code verwandt sein muss, da dieser Code aus einem Buch kam.
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);
}
}
Der Befehl Ich verwende dies auszuführen ist:
java AskTime us.pool.ntp.org
Update: Nach msaeed Rat Lesen ich den Port 123 geändert und jetzt wird erzählt wird Verbindung abgelehnt statt Verbindung abgelaufen. Ich denke also, msaeed richtig ist, hat jemand eine Idee, was sonst muss ich kommunizieren, um eine Zeit erhalten?
Lösung
So anscheinend verwendet dieser Code die alten DAYTIME
Protokoll , die Port verwendet 13. NTP
Protokoll Port verwendet 123 und erfordert ein bisschen mehr Kommunikation. Viele der NTP
Server gestoppt DAYTIME
Abfragen zu unterstützen.
Das NTP-Projekt stellt einen Beispielcode für einen NTP
Client in Java hier .
Andere Tipps
msaeed ist richtig. oder wählen Sie andere von Commons Net . In der Tat, sollten Sie an der Quelle aussehen oder so - Commons Net implementiert ziemlich viele Netzwerkprotokolle
.