I need the time from a NTP server.
I tied this:
TimeUDPClient client = new TimeUDPClient();
try {
client.open();
client.setSoTimeout(10000);
client.getTime(InetAddress.getByName(host));
client.close();
} catch (IOException exp) {
System.out.println("NTP connection error");
exp.printStackTrace();
return;
}
After a 10 Sekonds I get this exception:
java.net.SocketTimeoutException: Receive timed out at java.net.PlainDatagramSocketImpl.receive0(Native Method) at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143) at java.net.DatagramSocket.receive(DatagramSocket.java:812) at org.apache.commons.net.time.TimeUDPClient.getTime(TimeUDPClient.java:84) at org.apache.commons.net.time.TimeUDPClient.getTime(TimeUDPClient.java:98) at de.modusoft.opt.viewer.TimeSyncThread.run(TimeSyncThread.java:34) at java.lang.Thread.run(Thread.java:748)
I also tried this:
TimeTCPClient client = new TimeTCPClient();
client.setConnectTimeout(10000);
try {
client.connect(host);
Date ntpDate = client.getDate();
client.disconnect();
System.out.println("ntpDate = " + ntpDate);
} catch (IOException exp) {
System.out.println("NTP connection error");
exp.printStackTrace();
return;
}
And got also a Timout exception.
java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.commons.net.SocketClient.connect(SocketClient.java:182) at org.apache.commons.net.SocketClient.connect(SocketClient.java:203) at org.apache.commons.net.SocketClient.connect(SocketClient.java:296) at de.modusoft.opt.viewer.TimeSyncThread.run(TimeSyncThread.java:29) at java.lang.Thread.run(Thread.java:748)
host is a String and a tried "0.de.pool.ntp.org", "ntp.xs4all.nl".
Thanks for your help.
If you need the time from an NTP server, you need to use the NTP protocol. The TimeUDPClient
and TimeTCPClient
classes use the Time Protocol, not NTP.