我刚刚学习如何用 Java 进行网络连接,第一个从 NTP 服务器获取时间的简单示例不断抛出 ConnectException。我将复制并粘贴代码,但我感觉它一定是与代码无关的东西,因为该代码来自一本书。
import java.io.*;
import java.net.*;
public class AskTime {
public static void main(String a[]) throws Exception {
if(a.length != 1) {
System.out.println("your lame");
System.exit(0);
}
String machine = a[0];
final int daytimeport = 13;
Socket so = new Socket(machine,daytimeport);
BufferedReader br = new BufferedReader(new InputStreamReader(so.getInputStream() ) );
String time = br.readLine();
System.out.printf("%s says it is %s %n", machine, time);
}
}
我用来执行此操作的命令是:
java AskTime us.pool.ntp.org
更新:阅读 msaeed 的建议后,我将端口更改为 123,现在被告知连接被拒绝,而不是连接超时。所以我认为 msaeed 是对的,有人知道我还需要沟通什么才能收到时间吗?
最佳答案
显然这段代码使用了旧的 DAYTIME
protocol使用端口 13。NTP
protocol使用端口 123,需要更多的通信。许多 NTP
服务器停止支持 DAYTIME
查询。
NTP 项目为 Java 中的 NTP
客户端提供了示例代码 here .
关于java - 连接到 NTP 服务器始终失败 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225391/