0

アプリの最初の起動時に、〜 50 MB のファイルをダウンロードして解凍します。
世界中のユーザーがいて、ファイルをホストできる 3 つの異なるサーバーがあるので、それらすべてを使用してコードで確認することを考えました。サーバーはユーザーに最速/最も近く、それを使用します..

どうすればそれを達成できますか?

4

5 に答える 5

1

「拡張ファイル」の追加にGoogle Playサービスを利用してみませんか?ここを参照してください: http://developer.android.com/guide/google/play/expansion-files.html

個人的には試していませんが、間違いなく役立つはずです。

于 2012-10-21T09:34:29.337 に答える
0

また、所有しているすべてのサーバーとの TCP 接続を確立して、その所要時間を追跡することもできます。次に、時間が最小のものを使用します。

または、サーバーの既知の可用性を含むファイルを各サーバーからデバイスにプルさせます。

于 2012-10-21T09:36:04.317 に答える
0

私はこれまでにこれをやったことがないので、これは単なる推測ですが、どちらが近いかを知りたい場合は:

ユーザーの IP アドレスを取得する: コードからデバイスの IP アドレスを取得する方法は?

IP アドレスで逆引き DNS ルックアップを実行すると、次のようになります: c-24-131-5-42.hsd1.va.comcast.net

結果の文字列を見ると、私がバージニア州に住んでいることがわかります。国/州を使用して、サーバーに近い方を見つけて使用します。

于 2012-10-21T09:32:58.883 に答える
0

これを自分で行うには; デバイスのおおよその位置を取得するには、デバイスの IP アドレスを使用して geo ip サービスにクエリを実行する必要があります。次に、ファイルを提供するのに最適なサーバーと比較します。これには独自の問題があります (プロキシ/VPN トンネルはその 1 つです)。

2 つ目は、サーバーに ping を実行することです。ここでの問題は、プロバイダーによって ping がブロックされる可能性があることです (特に、デバイスが Wi-Fi に接続されていない場合)。Wi-Fi 上にある場合でも、ping は外部アドレスに対してブロックされ、ネットワーク内でのみ許可される場合があります。この場合; ping は常に失敗します。

したがって、信頼できる方法は、コンテンツ配信ネットワークを使用することです。可能な限り最も近いサーバーから自動的にファイルを提供します。アプリケーションを変更したり、別のサーバーを管理したりする必要はありません。

于 2012-10-21T09:34:26.260 に答える