0

私は現在、タイムスタンプに大きく依存するモバイルアプリを開発する初期段階にあります。

マスター デバイスは、wifi 経由で複数のクライアント デバイスに接続され、これらにさまざまなコマンドを発行します。クライアント デバイスがコマンドを受信すると、コマンドが実行されたときに (相対) タイムスタンプをマークする必要があります。これはすべて非常に単純ですが、クロックの違いを処理する方法については解決策を思いつきませんでした。たとえば、マスター デバイスのクロックが 12:01:01 で、クライアント A が 12:01:02、クライアント B が 12:01:03 であるとします。ほとんどの場合、これらのデバイスは NTP 経由で同期するため、同様の時間に設定されると予想できます。ただし、私のアプリケーションの性質上ミリ秒の精度が必要なため、不一致から保護したいと考えています。

コマンドの発行とコマンドの実行の間の短い遅延は問題ありませんが、そのコマンドが実行されたときの誤ったタイムスタンプは問題ありません。

これまでのところ、マスター デバイスが各クライアント デバイスに ping を実行してトランザクション時間を決定し、クライアントに「ローカル」時間を送信するように要求する方法を考えています。これに基づいて、マスターとクライアントの間の時間差を計算できます。時差がわかると、クライアントはそれに応じてタイムスタンプを調整できます。私はネットワーキングにあまり詳しくありませんが、多くの要因が適用され、遅延が変化する可能性があるため、デバイスへの ping はトランザクション時間を確立するための信頼できる方法ではないと思います。

このようなタイミングの問題が重要な現実世界の設定はたくさんあると思いますので、すでに解決策があるはずです。誰か知っていますか?単純に応答時間を 2 で割るだけで十分ですか?

ありがとう!

4

1 に答える 1

1

NTPv4 のRFC 5905に向かい、この問題に本当に頭を悩ませている人々から学び、その解決方法を学びます。

または、そもそもこの問題が発生しないように、サーバーで NTP が適切に機能していることを確認するだけです。

于 2012-06-24T22:09:44.983 に答える