Java套接字:NTP应用程序始终返回空字符串
我使用了一些代码从NTP(网络时间协议)获取时间。我尝试了许多服务器,但总是收到一个空字符串。我不知道这是因为服务器错误,或者我的代码有问题 这是我的密码:Java套接字:NTP应用程序始终返回空字符串,java,sockets,network-protocols,Java,Sockets,Network Protocols,我使用了一些代码从NTP(网络时间协议)获取时间。我尝试了许多服务器,但总是收到一个空字符串。我不知道这是因为服务器错误,或者我的代码有问题 这是我的密码: String machine = "utcnist2.colorado.edu"; // standart port on Computer to take time of day on normal computer final int daytimeport = 13; Socket socket = null; try {
String machine = "utcnist2.colorado.edu";
// standart port on Computer to take time of day on normal computer
final int daytimeport = 13;
Socket socket = null;
try {
socket = new Socket(machine, daytimeport);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String time = reader.readLine();
System.out.printf("%s says it is %s %n", machine, time);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
服务器分别返回两行。添加
reader.readLine()代码>就在字符串时间=reader.readLine()之前代码>使它工作
完整代码为:
public static void main(String[] args) {
String machine = "utcnist2.colorado.edu";
// standart port on Computer to take time of day on normal computer
final int daytimeport = 13;
Socket socket = null;
try {
socket = new Socket(machine, daytimeport);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
reader.readLine();
String time = reader.readLine();
System.out.printf("%s says it is %s %n", machine, time);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
你说的是:,对吧?好吧,我很困惑。这不是NTP。这是一个不同的协议。但是不管怎样:您得到的是空字符串还是异常?您需要读取这些行,直到reader.readLine()返回字符串为止代码>为空。到那时你已经到了河的尽头。这实际上应该在一个循环中完成,但是上面的代码对于这个示例来说已经足够了。