1

私はクライアント/サーバーソフトウェアを開発しており、クライアントの時計をサーバーの時計と同期させるための最良の方法を探しています。

もちろん、システム時計に触れたくないので、NTPは使えません。サーバーから受信したすべての日時にタイムギャップを追加して「現地時間」に変換できるように、タイムギャップを計算しようとしています。

私が知っていることはそれです:

  • GMT時間を使用してTimeZoneの問題を処理します

  • サーバーは接続時に現在の時刻をクライアントに送信し、クライアントは時刻からサーバー時間を差し引いてタイムギャップを計算します。

これは、ネットワークラグが一定の場合にうまく機能します(「myLAN」を読んでください...)

残念ながら、私は自分のソフトウェアをインターネット上で、さらにはモバイルクライアント上でも動作させたいと思っています。モバイルクライアントでは、最大1分のラグの変動が見られます。

私が取り組んでいるソフトウェアの場合、このような遅れは許容できません。

クライアント/サーバーのタイムギャップを計算するための良い戦略は何でしょうか?


最後に:私は両方の方法でメッセージを送信できます(クライアントからサーバーおよびサーバーからクライアント)

おそらく無関係ですが、この背後にあるテクノロジは、ポーリングを伴うhttpbindingを使用する.netWCFクライアントです。

4

2 に答える 2

1

NTP を使用できないのはなぜですか? もちろん、ntp のデフォルトはシステム時刻を設定することですが、これは必須ではありません。

$ ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset -0.102597, delay 0.05426
 2 Mar 11:44:36 ntpdate[12239]: adjust time server 91.189.94.4 offset -0.102597 sec
于 2009-03-02T10:45:58.703 に答える
0

ラグを計算するために、定期的にサーバーにpingを実行できます。私はあなたがインターネット上で本当に近づくことができるとは思わない。

于 2009-03-02T10:34:43.083 に答える