• ベストアンサー

サーバの時間の取得の仕方

1.WindowsNT4.0上のクライアント側からサーバのマシン時間(秒まで)取得をしたい。 2.あとクライアントの時刻も取得したい。 3.1.2.はc言語で行ったほうがいいのでしょうか? 具体的なコーディングがあればうれしいのですが・・。 宜しくお願いします。

  • phoo
  • お礼率85% (107/125)

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

サーバと時刻の同期を取りたいだけだったら、net コマンドでできますよ。 net time \\サーバ /set /yes ユーザは「システム時刻の変更」の権限を持っていなくてはいけません。 もし、サーバが NTP のサービスをしているのであれば、NTP クライアントの ソフトを導入することで可能です。Windows だったら有名所は「桜時計」で しょうか? # コーディングの話じゃなくて、申し訳ない

phoo
質問者

補足

桜時計があるなんてしりませんでした。あとClockSaver 1.5 日本語版で、NTPクライアントソフトや、GPS衛星の時刻電波などを利用でき時間のほせいができるそうです。すごですね。 丁寧にご解答いただきありがとうございます。 参考までに > 昨日連絡を頂きまして、WindowsAPIでサーバーの時刻を取得する処理について調査 > しました。 > まず、私がお答えできるのはサーバーが「WindowsNT」の場合に限ることを > 前提とさせて下さい。 > ====================================================== > ●クライアントOSが WindowsNT または Windows2000の場合 > ====================================================== > > 下記のプログラムでAPIが使用できます。 > 下記の宣言から呼び出し例までをVBに貼り付ければOKです。 > サンプルプログラムも作成いたしましたのでVB5なら > そのまま動作します。(実験済みです。) > > 【宣言】 > Declare Function NetRemoteTOD Lib "Netapi32.dll" _ > (UncServerName As Any, BufferPtr As Long) As Long > > Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ > (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) > > Type TIME_OF_DAY_INFO > tod_elapsedt As Long > tod_msecs As Long > tod_hours As Long > tod_mins As Long > tod_secs As Long > tod_hunds As Long > tod_timezone As Long > tod_tinterval As Long > tod_day As Long > tod_month As Long > tod_year As Long > tod_weekday As Long > End Type > > 【プロシージャ】 > Public Function GetServerDateTime(argServerName) As Date > Dim abytServerName() As Byte > Dim ptrTOD As Long > Dim stuTOD As TIME_OF_DAY_INFO > Dim ret As Long > > abytServerName = argServerName & vbNullChar > ret = NetRemoteTOD(abytServerName(0), ptrTOD) > If ret <> 0 Then > MsgBox "Server Not Found" > Exit Function > End If > > CopyMemory stuTOD, ptrTOD, Len(stuTOD) > GetServerDateTime = DateSerial(stuTOD.tod_year, stuTOD.tod_month, > stuTOD.tod_day) + _ > TimeSerial(stuTOD.tod_hours, stuTOD.tod_mins - stuTOD.tod_timezone, > stuTOD.tod_secs) > End Function > > 【呼び出し例】 > Dim dtSvDateTime As Date > dtSvDateTime = GetServerDateTime("サーバー名") > msgbox dtSvDateTime > > ====================================================== > ●クライアントOSが Windows95 または Windows98の場合 > ====================================================== > > APIは残念ながらわかりません。が時刻を取得するには下記の方法があります。 > > 1、MS-DOSコマンドで「NET TIME \\ServerName」と打つ > 2、「\\ServerNameの現在の時刻は 01/07/18 午前 11:06 です」 > と出力されます。(ServerNameは調べたいサーバー名です) > 3、出力結果の文字列を編集する > > > 以上です。

その他の回答 (1)

noname#794
noname#794
回答No.1

質問2についてVC++では以下の方法があるみたいです。 /* FTIME.C: このプログラムは、_ftime関数を使って、現在の時刻を求め、 * timebuffer に格納します。 */ #include <stdio.h> #include <sys\timeb.h> #include <time.h> void main( void ) { struct _timeb timebuffer; char *timeline; _ftime( &timebuffer ); timeline = ctime( & ( timebuffer.time ) ); printf( "現在の時刻は %.19s.%hu %s", timeline, timebuffer.millitm, &timeline[20] ); } 詳しくはヘルプを見てください。

phoo
質問者

補足

詳しい解答ありがとうございます。 調べた結果、下記のコーデングでもいいそうです。 #include <time.h> #include <stdio.h> void main( void ){ time_t ltime; time( &ltime ); printf( "現在の時刻は %s\n", ctime( &ltime ) ); } できれば次のことがしたい 1.クライアントとサーバの時刻の誤差を調べること 2.言語、方法は問わず(環境はWindousNT4.0のクライアントとサーバ) 3.誤差がある場合、時刻を合わせたい 宜しく、お願いします。

関連するQ&A

  • serverからの時刻取得

    server OS:windowsNT4.0sp5 クライアント OS:windows2000pro クライアントにて、 1.bat(バッチ)をクリック 2.サーバーの時刻を取得し、反映させたいです batファイル および 設定方法をご教示ください よろしくお願いいたします

  • [クライアントからサーバの時刻を取得する]

    [クライアントからサーバの時刻を取得する] 社内LAN環境にてcgiアプリケーションを作成しています。 予約処理のようなものですが、クライアントとサーバの時刻に差が有ると問題が起こる場合が有ります。 タイトルのような文言で検索してみたら、いろいろ検索できたのですが 正しく理解できていないのでどうもうまく組み込めません。 参考URL:http://game.gr.jp/svmix/js/test5.htm setServerTime.jsのURLを社内LAN上のサーバのローカルIPアドレスにしたのですが それだけではサーバの時刻を正しく取得できませんでした。 dynamicLoad('http://game.・・・・・・・・・/getservernow.js')        ↓ dynamicLoad('http://192.168.1.11/getservernow.js') といいますか、どこのサーバの時刻かわからないのですがクライアントとは少し違う時刻を表示します。 どうしたら、サーバマシンの時刻を正しく取得できるのか どなたかアドバイスいただけないでしょうか。 やりたいことは、LAN上の2台のマシンA、Bを使用して、B上のブラウザから Aのマシンの時刻をBで知りたいのですが。。。 よろしくお願いいたします。

  • Serverの時間取得(Ac97)

    ※スレ違いとは思いますがよろしくお願いします。 [日付時間の取得端末環境] Windows98 Access97 [Server環境] WindowsNT4.0SP6 SQL Server7.0 Server側の端末日付時間を取得をしたいのですが、よい方法がないでしょうか? VB6~やAccess2000~であればADOを使用してストアドプロシージャ からCURRENT_TIMESTAMP等で仮テーブルに時間を取得しておいて取得 端末側に値を引っ張る方法が取れますが、DAOのサポートしかしてい ないAccess97でServer時間の取得が出来るのでしょうか? APIや他のHP等で検索してみましたがHitしませんでした。検索の仕方が 悪いとも思っております。。。「出来る」「出来ない」だけでも結構です ので御教授お願い致します。

  • WindowsNT ServerのCPU使用率の取り方

    ServerがWindowsNT クライアント側が2000Professionalなのですが NTServerのCPU使用率をクライアント側から採りたいです。 30秒間隔程度で数時間にわたり取得し、あとで見た時に何時何分何秒に使用率○%と解るように取得したいのですが方法はございますでしょうか?? コントロールパネルのパフォーマンス機能でCPU使用率は見れるのですがあとから何時何分何秒に○%という風にどうしても見れませんでした。 unixのvmstat的なものがあればとても助かります。

  • サーバ時刻の取得

    いつもお世話になっています。 クライアント側の時刻ではなく、サーバの時刻を画面に表示したいと考えています。 サーバ情報をどうやったら取れるのか教えてください。

  • タイムサーバの作成について

    インタネートを通していない環境でサーバ構築しています。 タイムサーバにベクターで見つけたピッタリでちゅ!というソフトを使用し、クライアント側にSEIKOのWINSNTPを使用しています。 インターネットが使用できないし、ハードのタイムサーバもないので サーバ側を手で毎日時刻をあわせて、クライアントはその時刻を取得するという構成にしたいのですが、クライントがサーバの時刻は上位からのタイムサーバからの時刻を受けていないため、取得できませんとエラーになってしまいます。 何かアドバイスはありますでしょうか?

  • javaの時間取得先

    おおざっぱにいうとPHPはサーバの時間を元にしたり、Javascriptはクライアントだったりしますが JAVAの場合時間の取得先はどこなのでしょうか。 またsleepを使った場合1000ミリ秒はどこかから時間を取得か参照して1秒たったとJAVAが理解するはずですがそれはどこからでしょうか?

    • ベストアンサー
    • Java
  • javascriptでサーバの時間を取得するには?

    javascriptでサーバの時間を取得するには? 現在、入力フォームで生年月日を入力してもらい同時に自動的に年齢計算をする、ということをjavascriptでしています。 ただ、時間の取得はクライアントに依存しております。 そのため、クライアントの時間設定(年月日)が大幅に狂っていると、年齢計算が実際の年齢と合わなくなってしまいます。 できればこれを避けたいのですが、javascriptでサーバから時間を取得する方法がわかりません。 そもそも可能なのでしょうか? 調べたところ、SSIで取得したものをjavascriptに取り込む、という方法があるようなのですが、サーバがSSIを許していない場合は他に手はあるのでしょうか? (現在、当サーバがSSIを許しているかどうかは確認ができていません) ちなみに、cgiとかにプログラムを変更するということも一案ではありますが、諸事情があり、可能な限りjavascriptで対応したいと考えております。 お恥ずかしながら、システムやプログラムなどに精通しているわけではありませんので、おかしなことを書いているかもしれませんが、そのあたりご了承ください。 ぜひともアドバイスください。 宜しくお願い申し上げます。

  • NTPサーバの設定の仕方

    OSはfreeBSD4.6を使用しています。 外にはつなげずローカルネットでNTPサーバを構築したいです。 ある一つのサーバの時刻を基準にしてNTPのクライアントをつくっていきたいと考えています。 サーバ側の設定の仕方と クライアント側の設定の仕方を教えていただけないでしょうか?

  • クライアント情報の取得について(Win32API)

    同一ドメイン内に接続されているクライアント情報をサーバで取得したいのです。 サーバ上でサービスとして動作させています。ドメイン内にあるクライアントの 情報を取得したいと思っています。取得したい内容は、 1.コンピュータ名 2.ユーザ名(クライアントがログインしている時のユーザ名) 3.IPアドレス 4.MACアドレス の4つです。この4つのクライアント情報をサーバ側で取得したいのですが。 これら取得に関するWin32APIはありますか? プログラミング環境は、C言語(VisualC++)です。