java - TimeTCPClient 和 TimeUDPClient 都超时
问题描述
我需要来自 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 秒后,我得到了这个异常:
java.net.SocketTimeoutException:在 java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143) 在 java.net.DatagramSocket.receive(DatagramSocket.java:812) 的 java.net.PlainDatagramSocketImpl.receive0(Native Method) 接收超时) 在 org.apache.commons.net.time.TimeUDPClient.getTime(TimeUDPClient.java:98) 在 de.modusoft.opt 的 org.apache.commons.net.time.TimeUDPClient.getTime(TimeUDPClient.java:84)。查看器.TimeSyncThread.run(TimeSyncThread.java:34) 在 java.lang.Thread.run(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;
}
并且还得到了一个超时异常。
java.net.SocketTimeoutException:在 java.net.AbstractPlainSocketImpl.java:350 的 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 的 java.net.PlainSocketImpl.socketConnect(Native Method) 连接超时。 ) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:589) 在 org.apache .commons.net.SocketClient.connect(SocketClient.java:182) 在 org.apache.commons.net.SocketClient.connect(SocketClient.java:203) 在 org.apache.commons.net.SocketClient.connect(SocketClient.java :296) 在 de.modusoft.opt.viewer.TimeSyncThread.run(TimeSyncThread.java:29) 在 java.lang.Thread.run(Thread.java:748)
主机是一个字符串和一个尝试过的“0.de.pool.ntp.org”、“ntp.xs4all.nl”。
谢谢你的帮助。
解决方案
如果您需要来自 NTP 服务器的时间,则需要使用 NTP 协议。和类使用时间协议,TimeUDPClient
而TimeTCPClient
不是 NTP。
推荐阅读
- javascript - Chrome 扩展“MAX_WRITE_OPERATIONS_PER_MINUTE”错误
- javascript - 使用 props 将类组件更改为功能组件
- javascript - 从我的 HTML 源代码中删除整个“图形”元素
- html - 试图将我的标题贴在页面顶部
- azure - Azure 中的 AD FS 可以受应用网关保护还是需要 WAP 服务器?
- python - ValueError:对于从 matlab 保存的 .txt 文件,无法在 jupyter 中将字符串转换为浮点数
- scala - 使用查找表将布尔值分配给scala中的列值
- javascript - PWA “start_url 确实响应了,但不是通过服务人员。” -- NextJS-PWA
- c# - Xamarin 表单修剪 MP3 文件
- mysql - MySQL 使用存储过程中最后插入的 id