我只是学习如何做到的网络和第一个简单的例子获取时间从一个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 协议 使用的口13。 NTP 协议 使用口123和需要更多的通信。很多 NTP 服务器停止支持 DAYTIME 查询。

NTP项目提供了一个样本代码 NTP 客户在Java 在这里,.

其他提示

msaeed 是正确的。你可以使用你的代码,如“time.nist.gov” daytime服务器 - 或者从的此列表

更新如果你的最终目标是与NTP服务器通信(而不是如你说,最初与插座玩),你应该看的共享网。事实上,你应该看它的源两种方式 - 共享网实现了相当多的网络协议

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top