gpt4 book ai didi

java - 使用 TimeTCPClient 从公共(public)时间服务器获取时间

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:28 26 4
gpt4 key购买 nike

我尝试使用以下代码从公共(public)时间服务器获取时间。

package aaa;

import java.util.Arrays;
import java.util.List;

import org.apache.commons.net.TimeTCPClient;

public final class Main
{
public static java.util.Date getNTPDate() {
List<String> hosts = Arrays.asList("0.pool.ntp.org");

for (String host : hosts) {
TimeTCPClient client = new TimeTCPClient();
// We want to timeout if a response takes longer than 5 seconds
client.setDefaultTimeout(5000);
try {
client.connect(host);
java.util.Date ntpDate = client.getDate();
client.disconnect();
// Just to be extra caution.
if (ntpDate != null) {
return ntpDate;
}
}
catch (java.net.SocketException exp) {
exp.printStackTrace();
}
catch (java.io.IOException exp) {
exp.printStackTrace();
}
}
return null;
}

public static final void main(String[] args)
{
System.out.println(getNTPDate());
}

}

但是,我一直收到 java.net.ConnectException: Connection timed out: connect

我曾尝试用谷歌搜索几个不同的时间服务器。但是,它们都不起作用。我在想,问题出在我的代码上,还是我选择的服务器上?

最佳答案

NTP 是一种不同于时间协议(protocol)的协议(protocol)。 NTP 服务器仅通过端口 UDP/123 通信。时间服务器使用 TCP/37(TimeTCPClient 似乎可以正确实现)。

如果您想获取远程时间,请使用合适的服务器(ntp.xs4all.nl 似乎正在监听时间端口)。

关于java - 使用 TimeTCPClient 从公共(public)时间服务器获取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7081262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com