アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

社内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で知りたいのですが。。。

よろしくお願いいたします。

A 回答 (2件)

こんばんわ。



上記の例では192.168.1.11(サーバ?)上の時刻を取得しているのではないでしょうか?
クライアントとは少し違う時刻...というのは単純にサーバとクライアントで時刻がずれているのだと思います。

上記のサイトの説明でもありますがJavaScriptの new Date()は、実行しているブラウザのPC時刻より取得しますが、CGIかなにかを使った場合は、サーバ側の時刻を取得できます。

B上のブラウザでAの時刻を知りたいのなら、A上に時刻を取得するCGIスクリプトを設置し、Bからスクリプト呼び出しすれば取得できると思います。

この回答への補足

KDASH-XPさん、ありがとうございます。
最初そう思って「やった~!」と思ったのですが、192.168.1.11(サーバ)の時刻を変更(コマンドプロンプトで timeコマンドをたたいて時分を変更)しても
その時刻がとれず、少しだけ違う、どこかのマシンの時刻を表示しているだけなのです。

## B上のブラウザでAの時刻を知りたいのなら、
## A上に時刻を取得するCGIスクリプトを設置し、
## Bからスクリプト呼び出しすれば取得できると思います。
まさにこれを実現しているのが参考のURLだと思って試してみたのですが。。。


qaz_qwerty_meさん、ありがとうございます。
NTPによる同期は別システムでやったことがあるので少しだけわかります。
ただ、今回はお客様の都合により、外部のNTPサーバに接続することができません。
サーバのマシンは外部NTPサーバより時刻を設定できるかもしれませんが、
クライアントのほうは出来ない状態です。
そしてサーバで時刻合わせをしていなくて、時刻が正しくなくても、
システムはサーバの時刻で動くことになり
クライアントのほうはサーバの時刻にあわせて動かないといけないのです。


引き続き、よろしくお願いいたします。

補足日時:2010/03/21 19:37
    • good
    • 0

>やりたいことは、LAN上の2台のマシンA、Bを使用して、B上のブラウザから


>Aのマシンの時刻をBで知りたいのですが。。。
基本的なことを勘違いしています。

検索エンジンでNTPというキーワードで検索すると、ネットワークに接続されたコンピュータの時刻を同期するプロトコルとしてNTPが解説されているので、それを参照して理解して下さい。

NTPを理解すれば「クライアントとサーバの時刻に差が有ると問題」は解決すると思います。

一般的なNTPによる同期は、外部のNTPサーバ(stratum 1)に同期した社内NTPサーバ(stratum 2)を1台決め、他のサーバやクライアンが社内NTPサーバに同期させて外部NTPサーバの負荷を減らす構成を作ります。
GPSでもNTPサーバを構築できるので必ず外部サーバがなくても高精度の時刻同期を行うことができます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!