質問

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 プロトコルを使用しているようです。ポート13を使用します。 NTP プロトコルはポート123を使用し、少し必要ですより多くのコミュニケーション。 NTP サーバーの多くは、 DAYTIME クエリのサポートを停止しました。

NTPプロジェクトは、Javaの NTP クライアントのサンプルコードを提供しますこちら

他のヒント

msaeed が正しい。 'time.nist.gov'などのDAYTIMEサーバーでコードを使用するか、このリスト

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top