• ベストアンサー

NTPサーバーへのアクセス

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

  • Java
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • 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

  • ntpポートを開けるには??

    こんばんは。 RedHat7Jで、NTPサーバーを立てたくて、クライアント(Windows)で、それを参照して時刻を合わせたいと思っています。 で、RedHat7Jに「xntp3-5.93-4.i386.rpm」ってのをどこからか忘れましたが、ダウンロードしてインストールしました。インストールして「/etc/rc.d/init.d」にできた「xntpd」と言うのを起動しているのですが、NTPポートが開いていないらしくて、クライアントから参照できません。 サーバーの時刻は、ちゃんと合わせれています。 どうか、クライアントから時刻が合わせれるようにNTPポートを開けたいのですが、方法がわかりません。 どの本等をみても、xntpd、ntpdを起動して、クライアントでは桜時計などのツールを入れて、NTPサーバーを、ntpdの起動させたサーバーに設定するとしか書いていません。 どうか、宜しくお願いいたします。

  • ntpのstratumについて

    RedHat ES4で、NTPサーバを起動させて、外部NTPサーバとの同期はとれるようになりました。 しかし、社内のWindowsサーバ(workgroup)から、同期しようとすると以下の結果になります。 ・ 日付と時刻のプロパティで、「インターネット時刻」タブで、LinuxサーバのIPアドレスを指定し「いますぐ更新」をクリックすると、 192.168.10.xxは同期中にエラーが発生しました。タイムサンプルは拒否されました。ピアの階層は、ホストの階層よりも少ないです。 というメッセージ ・質問1 ネットでいろいろとしらべてみましたが、LinuxサーバのStratumの値が、Windowsサーバのそれよりも小さいのでは?という記述がありました。 最上位のNTPサーバのstratumは1のはずですので、「ホストの階層より少ない」=「stratum値が大きい」ということなのでしょうか? ・質問2 LinuxサーバのStratum値をWindwosサーバより「大きく」するためには、どうしたらよいのでしょうか? ちなみに、念の為、ntp.conを確認しましたら、現状stratum値は、明示的に指定していませんでした。(コメントアウトしてました) よって、Linuxサーバのstratum値は、初期値?になっているものと思います。(この初期値もわからないのですが・・・) ご面倒おかけしますが、よろしくお願い致します。

  • ntpポートを開けるには??

    こんばんは。 コンピュータネットワーク(その他)で質問させてもらっていたのですが、内容が こっちのような気がしたので、再度質問させていただきます。 RedHat7Jで、NTPサーバーを立てたくて、クライアント(Windows)で、それを参照して時刻を合わせたいと思っています。 で、RedHat7Jに「xntp3-5.93-4.i386.rpm」ってのをどこからか忘れましたが、ダウンロードしてインストールしました。インストールして「/etc/rc.d/init.d」にできた「xntpd」と言うのを起動しているのですが、NTPポートが開いていないらしくて、クライアントから参照できません。 サーバーの時刻は、ちゃんと合わせれています。 どうか、クライアントから時刻が合わせれるようにNTPポートを開けたいのですが、方法がわかりません。 どの本等をみても、xntpd、ntpdを起動して、クライアントでは桜時計などのツールを入れて、NTPサーバーを、ntpdの起動させたサーバーに設定するとしか書いていません。 どうか、宜しくお願いいたします。

  • NTPサーバー接続するとネットが切断される

    WRC-X3200GST3-Bを使っているが、時々ネットが切断され、ログを見ると、NTPサーバーに時間などの確認ためアクセスすると必ずネットが切れる現象が起きている 何か解決方法がないでしょうか ※OKWAVEより補足:「エレコム株式会社の製品」についての質問です。

  • NTPサーバ時刻同期の設定を教えて下さい

    FreeBSD6.1 にて NTPサーバを作成しています。 server1(FreeBSD6.1) 192.168.100.1 router1 192.168.100.2(server1側) 192.168.200.2(client側) client1(windows2000) 192.168.200.1 ntp.confは server 133.100.9.2 server 127.127.1.0 fudge 127.127.1.0 stratum 10 driftfile /var/db/ntp.drift restrict default ignore restrict 133.100.9.2 nomodify noquery notrap restrict 127.0.0.0 mask 255.0.0.0  restrict 192.168.100.0 mask 255.255.255.0 notrust nomodify noquery restrict 192.168.200.0 mask 255.255.255.0 notrust nomodify noquery rc.confには xntpd_enable="YES" xntpd_program="/usr/sbin/ntpd" xntpd_flags="-p /var/run/ntpd.pid -c /etc/ntp/ntp.conf" ntpdate_enable="YES" ntpdate_program="/usr/sbin/ntpdate" ntpdate_flags="clock.nc.fukuoka-u.ac.jp" 現在server1 を clock.nc.fukuok で時刻同期は ntpq -p にて確認し、 remote refid St *clock.nc.fukuok .GPS. 1 LOCAL(0) LOCAL(0) 10 *印がついているので外部NTPサーバとは同期がとれているように思えます。 ipfilterは使用していません。 client1(windows2000)より net time /setsntp:192.168.200.1 をしてコマンド正常終了を確認。server1とclient1の時刻誤差は12時間以内です。ping 192.168.200.1はOKです。 最初に一回だけ同期を合せようと net time \\192.168.200.1 /set /yes を行うと システムエラー53が発生。 ネットワークパスが見つかりません。と表示されました。 あとは、 client1で w32tm -once を行うと、 sending to server 48byte で止まります。 桜時計などで外部とのNTPサーバとは同期が取れます。 FreeBSDとwindowsを同期させるにはなにかFreeBSD側にソフトをインストールする必要があるのでしょうか?それとも設定がおかしいのでしょうか? すみませんが教えて下さい。

  • NTPサーバから時刻を取得する

    VC++にてNTPサーバから時刻を取得するためにNetRemoteTODを用いていますが、以下の方法ではコンパイルはできるのですが、プログラム実行時にサーバにつながらなくエラーとなります。サーバの指定方法がまずい気もするのですが、どのように修正すればよいのかご教授よろしくお願いします。 LPTIME_OF_DAY_INFO pBuf = NULL; NET_API_STATUS nStatus = NetRemoteTOD(L"\\\\ntp.jst.mfeed.ad.jp", (LPBYTE *)&pBuf); if(nStatus == NERR_Success){ if(pBuf != NULL){ char d[1024]; sprintf(d, "%d/%d/%d %d:%d:%d", pBuf->tod_month, pBuf->tod_day, pBuf->tod_year, pBuf->tod_hours, pBuf->tod_mins, pBuf->tod_secs); AfxMessageBox(d,MB_OK|MB_ICONSTOP); } } else{ AfxMessageBox("Error in NetRemoteTOD",MB_OK|MB_ICONSTOP); } if (pBuf != NULL) NetApiBufferFree(pBuf);

  • 外部のAPIを起動させるには

    開発環境(ローカルPC)からAIXサーバー上にあるjavaのAPIを起動するjavaツールを作成しようとしています。 外部のAPIを起動させることができるようなAPIは存在しますでしょうか?

    • ベストアンサー
    • Java
  • Accessに対するGrep検索

    お世話になります。 Access(2000)MDBファイルの中に記述されている コードに対して秀丸等のソフトを使ってGrep検索をかけたいのですが うまくひっかかってくれません。 Accessに対してGrep検索が行えるツール等、 ご存知でしたら教えてください。

  • プロキシ経由でWEBサーバへアクセスする方法について教えて下さい。

    プロキシ経由でWEBサーバへアクセスする方法について教えて下さい。 現在、JAVAで開発を行っていますが、プロキシサーバ経由でWEBサーバへアクセスする方法が分からなくて困っています。(大雑把ですが、クライアントPC→プロキシ プロキシ→WEBサーバの流れを) ロジックとして記述しないといけないのか?もしくは、設定ファイル(例えばINIファイル)などを設定する事で行うのか?がまず分かりません。 どなたか良い方法があれば教えて下さい。よろしくお願い致します。 開発:JAVA WEBサーバ:Tomcat5.5 DB:PostgreSQL OS:Windows2008 Server

  • oracleサーバにアクセスしたい

    教えて下さい。 リモートPC上から、バッチプログラム等で遠隔地にあるOracleサーバのデータ を取り出すには、いろいろな方法があると思いますが、perlでは、DBIを使っ て、net8経由で接続し、DBDのoracleツール等でデータを取り出す(間違って たらすみません)と思うのですが、この、「NET8」を使用しないで、Oracleへ 接続することが可能な言語はありますか? 例えば、JAVAならできるとか..。 なお、リモートPCは、linuxサーバで、このPC上でバッチを動作させるという のがユーザの条件なんです。net8も買いたくないといわれてるので。 よろしくお願いします。

専門家に質問してみよう