2

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 に変更したところ、接続がタイムアウトしたのではなく、接続が拒否されたと言われています。だから私はmsaedが正しいと思います.誰かが私が時間を受け取るために他に何を伝える必要があるか知っていますか?

4

2 に答える 2

4

したがって、このコードはポート13を使用 する古いDAYTIMEプロトコルを使用しているようです。NTPプロトコルはポート123を使用しており、もう少し通信が必要です。サーバーの多くはクエリのNTPサポートを停止しました。DAYTIME

NTPプロジェクトは、NTPJavaのクライアント用のサンプルコードをここに提供します。

于 2009-08-04T02:08:14.253 に答える
1

ムサイード そうです。「time.nist.gov」のような DAYTIME サーバーでコードを使用するか、このリストから他のものを選択できます

更新最終目標が NTP サーバーと通信することである場合 (最初に言ったようにソケットで遊ぶのではなく)、Commons Netを確認する必要があります。実際、どちらの方法でもそのソースを確認する必要があります。Commons Net はかなりの数のネットワーク プロトコルを実装しています。

于 2009-08-04T02:14:14.903 に答える