使用 TimeTCPClient 从公共时间服务器获取时间

2024-02-12

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

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 是与时间协议不同的协议。 NTP 服务器仅通过端口 UDP/123 进行通信。时间服务器使用 TCP/37(TimeTCPClient 似乎正确实现)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TimeTCPClient 从公共时间服务器获取时间 的相关文章

随机推荐