NTPサーバーへの接続が失敗し続ける(Java)
-
22-07-2019 - |
質問
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はかなりの数のネットワークプロトコルを実装しています。
所属していません StackOverflow