• ベストアンサー

NTPサーバーへのアクセス

Javaコンソールツールを作成して、その中でNTPサーバーにアクセスが必要です。 ネットを探しても、Java API ドキュメントをダウンロードして検索してもNTPについてのサンプルコードや記述が見つかりませんでした。 JavaでNTPサーバーにアクセスするには、どのようにアクセスすればよいのでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yoneda_16
  • ベストアンサー率47% (166/350)
回答No.1

Googleで探してみたところ、The Apache Software Foundationが配布しているThe Jakarta Commons projectにntp実装が含まれてますね。 http://jakarta.apache.org/commons/ からNet ComponentをみてJavaDocをみるとPackage org.apache.commons.net.ntp っちゅーのがあるようです。どういう用途に使うのかは知りませんが、Apache projectならライセンスについても比較的楽なのでは。

yn001ster
質問者

お礼

ありがとうございました。 標準のパッケージであるものとばかり思っていましたがないということなのですね。 大変助かりました。 ありがとうございました。

yn001ster
質問者

補足

いただいた情報を元に、トライ&トライで頑張って動かなかったので、なんとかサンプルを探し当てたのですが、2005年にしてテストして見ると下記のようにどうしても実行しているコンピュータの時刻が帰ってきてしまいます。 Tue Sep 06 21:18:42 JST 2005 どうすれば、NTPサーバーからの時刻を引っ張ってこれるのでしょうか? (参考にした情報)http://jakarta.apache.org/commons/net/apidocs/index.html http://www.portaljava.com.br/home/modules.php?name=Forums&file=viewtopic&t=28633&view=next import org.apache.commons.net.ntp.NTPUDPClient; import org.apache.commons.net.ntp.TimeInfo; import java.net.InetAddress; import java.util.Date; public class ntp { public static void main(String args[]) { try { NTPUDPClient ntp = new NTPUDPClient(); ntp.open(); String ntphost = "ntp.jst.mfeed.ad.jp"; InetAddress inet = InetAddress.getByName(ntphost); TimeInfo time = ntp.getTime(inet); ntp.close(); Date hora = new Date(time.getReturnTime()); System.out.println(hora); } catch (Exception e) { e.printStackTrace(); } } }

その他の回答 (1)

  • yoneda_16
  • ベストアンサー率47% (166/350)
回答No.2

まずNTPについて勉強してみましょう。そうすると、NTPは時刻を合わせるためのプロトコルであり、その際にいろいろと考えなくてはいけないことがあるということがわかってくるように思います。 # 私もそれほどわかってはいないので説明はしません。 その上でPackage org.apache.commons.net.ntpを見ると、各クラスの役割とかがわかって来て、なにが抜けているかが推測できるようになるのではないかと。 たぶんTimeInfoクラスのmethodをもう少し使う必要があるのだと思います。自信はないですけど。

yn001ster
質問者

お礼

ご親切にご助言ありがとうございました。 ソフトに使用期限を設けるため、外部の時計が使いたかったのですが、ふと回避策が思い浮かびました。 時刻はNTPという頭があったため、NTPに囚われていたいたのですが、Webサーバー上にCGIを作成し、時刻を取得すればよいことに気づきました。 今回は時間がなかったため、上記回避策で対応しました。ありがとうございました。

関連するQ&A