Java HTTP 客户端从 NTP 服务器获取时间

Java HTTP client getting time from NTP server

我正在尝试编写一个 HTTP 客户端,我需要从我在此处找到的 NTP 服务器获取时间:https://tf.nist.gov/tf-cgi/servers.cgi

这是我的 Java 代码:

String getTime(){
    String time = "";
    try{
        Socket timeSocket = new Socket("time-a-g.nist.gov",37);
        BufferedReader timeIn = new BufferedReader(new InputStreamReader(timeSocket.getInputStream()));
        time = timeIn.readLine();
        timeSocket.close();
        timeIn.close();
    }
    catch(IOException e){
        e.printStackTrace();
    }
    return time;
}

我没有收到任何错误,但我返回的字符串为空,有人可以帮忙吗?

您要连接的 TCP(和 UDP)端口 37 用于 TIME 协议 (RFC 868)。在此协议中,时间以网络字节顺序作为单个二进制 32 位整数发送。

UDP 端口 123 用于 NTP 协议(RFC 1059, 1119, 1305, 5905)。在此协议中,时间作为一系列二进制消息发送。

您无法使用 BufferedReader.ReadLine().

读取任何一种类型的数据作为文本