我需要来自NTP服务器的时间。
我绑了这个:
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;
}
在10 Sekonds之后,我得到了这个例外:
java.net.SocketTimeoutException:接收在java.net.DataLings上的java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143)的java.net.PlainDatagramSocketImpl.receive0(本机方法)超时(DatagramSocket.java:812) )org.apache.commons.net.time.TimeUDPClient.getTime(TimeUDPClient.java:84)位于or.modusoft.opt的org.apache.commons.net.time.TimeUDPClient.getTime(TimeUDPClient.java:98)。 java.lang.Thread.run中的viewer.TimeSyncThread.run(TimeSyncThread.java:34)(Thread.java:748)
我也试过这个:
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;
}
并且还获得了Timeout异常。
java.net.SocketTimeoutException:java.net上的java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)中java.net.PlainSocketImpl.socketConnect(Native Method)的连接时间超时(AbstractPlainSocketImpl.java:206) )java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)的java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)at java..Socket.connect(Socket.java:589)at org.apache .gmons.com.SocketClient.connect(SocketClient.java:182)位于org.apache.commons.net.SocketClient.connect(SocketClient.java:203)org.apache.commons.net.SocketClient.connect(SocketClient.java) :296)at.modusoft.opt.viewer.TimeSyncThread.run(TimeSyncThread.java:29)at java.lang.Thread.run(Thread.java:748)
host是一个String并且尝试过“0.de.pool.ntp.org”,“ntp.xs4all.nl”。
谢谢你的帮助。
如果您需要NTP服务器的时间,则需要使用NTP协议。 TimeUDPClient
和TimeTCPClient
类使用时间协议,而不是NTP。